Как заполнить поля сведений при изменении выбранного поля со списком в ASP.net MVC - PullRequest
0 голосов
/ 02 июля 2019

У меня есть следующие методы класса контроллера для получения и публикации действий по обновлению записи о человеке в моем приложении MVC с использованием службы WCF. Там я использую комбинированный список, чтобы выбрать идентификатор. Вот мои методы класса контроллера для получения информации о человеке.

public ActionResult updatePerson()
        {
            Service1Client SCOBJ = new Service1Client();
            List<Person> PeLi = SCOBJ.GetPersons().ToList();
            ViewBag.List = PeLi.Select(x => new SelectListItem
            {
                Value = (Convert.ToString(x.Id)),
                Text = x.FName + " " + x.LName
            });
           return View();
        }

        [HttpPost]
        public ActionResult updatePerson(Person personobj)
        {
            Service1Client SCOBJ = new Service1Client();
            SCOBJ.UpdatePerson(personobj);
            List<Person> PeLi = SCOBJ.GetPersons().ToList();
            ViewBag.List = PeLi.Select(x => new SelectListItem
            {
                Value = (Convert.ToString(x.Id)),
                Text = x.FName + " " + x.LName
            });
            return View();
        }

Это мой взгляд.

<form method="post" action="@Url.Action("updatePerson")">

    ID:@Html.DropDownList("Id", new SelectList(ViewBag.List, "Value", "Text"))
    @*<input type="text" name="Id" />*@ 
    <br />
    First Name: <input type="text" name="FName" />
    <br />
    Middle Name: <input type="text" name="MName" />
    <br />
    Last Name: <input type="text" name="LName" />
    <br />
    Date of Birth:<input type="date" id="start" name="DOB" value="2018-07-22" min="1900-01-01" max="2000-12-31" />
    <br />
    NIC:<input type="text" name="NIC" />
    <br />
    Address:<input type="text" name="Adddress" />
    <br />
    <input type="submit" value="Insert" />

</form>

Я хочу добиться загрузки данных в поле «Имя», «Имя», «Фамилия», адрес, текстовые поля NIC и поле ввода даты и времени DOB, когда я изменяю выбранное значение идентификатора. Другими словами, я хочу загрузить подробные записи во все поля, когда я выбираю идентификатор из списка выбора для идентификатора. Как мне этого добиться?

1 Ответ

0 голосов
/ 02 июля 2019

Допустим, у вас есть это в вашем контроллере

public JsonResult GetPersonDetails(int Id){
    var person = db.Person.Where(m => m.Id == Id); //this should be accessed from the db
    return Json(person);
}

Тогда, по вашему мнению, у вас есть

<form method="post" action="@Url.Action("updatePerson")">

    ID:@Html.DropDownList("Id", new SelectList(ViewBag.List, "Value", "Text"), null,  new { @id= "Id"})
    <br />
    First Name: <input type="text" name="FName" id="FName" />
    <br />
    Middle Name: <input type="text" name="MName" id="MName" />
    <br />
    Last Name: <input type="text" name="LName" id="LName" />
    <br />
    Date of Birth:<input type="date" id="start" name="DOB" value="2018-07-22" min="1900-01-01" max="2000-12-31" />
    <br />
    NIC:<input type="text" name="NIC" />
    <br />
    Address:<input type="text" name="Adddress" />
    <br />
    <input type="submit" value="Insert" />

</form>

, убедитесь, что все входные данные Id переменная

Тогда у вас будет функция Javascript для вызова контроллера

$("#Id").change(function(){
   var  value = $("#Id").val();
   //$.get(URL,data,function(data,status,xhr),dataType)
   $.get(
        "@Url.Action("GetPersonDetails")", 
        {id:value},
        function (response) {    
            $("#FName").val(response.FName);
            //assign all other variables here
        },
        "json"
   );
});
...