2016-07-05 5 views
-1

Я пытаюсь заполнить текстовое поле из jquery после выбора опции из раскрывающегося списка. Я включаю некоторые фрагменты кода.Заполнить текстовое поле из списка выпадающего списка в MVC

Это разметка вида.

<div class="form-group"> 
     @Html.LabelFor(model => model.DependantID, "DependantID", htmlAttributes: new { @class = "control-label col-md-2" }) 
     <div class="col-md-10"> 
      @Html.DropDownList("DependantID", null, htmlAttributes: new { @class = "form-control", @onchange = "GetRegNo()" }) 
      @Html.ValidationMessageFor(model => model.DependantID, "", new { @class = "text-danger" }) 
     </div> 
    </div> 

    <div class="form-group"> 
     @Html.LabelFor(model => model.RegNo, htmlAttributes: new { @class = "control-label col-md-2" }) 
     <div class="col-md-10"> 
      @*@Html.EditorFor(model => model.RegNo, new { htmlAttributes = new { @class = "form-control" } })*@ 
      <span id="loading_progress1" style="display: none;">Please wait...</span> 
      @Html.TextBoxFor(model => model.RegNo, new { @Value = @ViewBag.Regno, @readonly = "readonly", @class = "form-control" }) 
      @*@Html.TextBoxFor(model => model.RegNo, new { @Value = Regno, @readonly = "readonly", @class = "form-control" })*@ 
      @Html.ValidationMessageFor(model => model.RegNo, "", new { @class = "text-danger" }) 
     </div> 
    </div> 

Это JQuery код, который я надеюсь достичь

function GetRegNo() { 
    var dependid = $('#DependantID').val(); 
    var dprogress = $('#loading_progress1'); 
    dprogress.show(); 
    //alert(schoolid); 
    $.ajax({ 
     cache: false, 
     //url: '@Url.Action("/Patients/FillClass")', 
     url: '/Patients/FillClass', 
     type: "GET", 
     datatype: "json", 
     data: { DependID: dependid }, 
     success: function (stud) { 
      $("#RegNo").html(""); ///clear entry before appending 
      $("#RegNo").html() = stud.regno; 
      alert("I reach here"); 
      alert("data.regno " + stud.regno); 
     //$.each(studi, function (i, stude) { 
     //$("#SClassID").append(
     //$('<option></option>').val(stude.SClassID).html(stude.Class)); 
     // }); 
     dprogress.hide(); 
     }, 
     error: function (response) { 
     alert("Error: " + response.responseText); 
     dprogress.hide(); 
     } 

    }); 

Тогда это от контроллера

[AcceptVerbs(HttpVerbs.Get)] 
    public ActionResult FillClass(int? dependid) 
    { 
     if (dependid == null) 
     { 
      return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
     } 
     string regno=""; 
     var N = db.Patients.Max(f => (int?)f.PatientID).GetValueOrDefault(0); 
     N++; 
     string Nt = Convert.ToString(N); 
     if (dependid == 1) 
     { 

      regno = "M" + Convert.ToString((DateTime.Now).ToString("yy")) + BizLogic.Right("00000" + Nt, 5); 
     } 
     else 
     { 

      regno = "D" + Convert.ToString((DateTime.Now).ToString("yy")) + BizLogic.Right("00000" + Nt, 5); 
     } 
     return Json(regno, JsonRequestBehavior.AllowGet); 
    } 

Так из моих фрагментов кода выше, когда происходит изменение в выпадающий список, называется java, который, в свою очередь, вызывает метод в контроллере и заполняет текстовое поле. Если есть лучший способ, я все открыт. Спасибо.

+0

Вы отправили кучу кода. Разве это не работает? У вас нет четкого состояния проблемы в вашем вопросе. Кроме того, вы никогда не должны ссылаться на «JavaScript» как на «Java», поскольку они совершенно разные. – mason

+0

Спасибо за исправление в отношении Java и Javascript, мое плохое. Но я отправляю коды так, чтобы то, что я пытаюсь достичь, можно увидеть. –

+0

И нет, это не работает! –

ответ

0

Я нашел проблему с помощью сценария jquery. Я опубликую изменения и укажу на изменение. Это связано с моим заданием. строка, помеченная здесь, отправляет значение в текстовое поле.

function GetRegNo() { 
    var dependid = $('#DependantID').val(); 
    var dprogress = $('#loading_progress1'); 
    dprogress.show(); 
    //alert(schoolid); 
    $.ajax({ 
     cache: false, 
     //url: '@Url.Action("/Patients/FillClass")', 
     url: '/Patients/FillClass', 
     type: "GET", 
     datatype: "json", 
     data: { DependID: dependid }, 
     success: function (stud) { 
      $("#RegNo").html(""); ///clear entry before appending 
    here: $('input#RegNo').val(stud); //i missed it here, changing to this changed solved the problem, compare with with script in the question 

     dprogress.hide(); 
     }, 
     error: function (response) { 
     alert("Error: " + response.responseText); 
     dprogress.hide(); 
     } 

    }); 
    } 
Смежные вопросы