У меня есть представление и внутри этого представления У меня есть div, который будет содержать частичный вид.Как обновить модель представления в частичном представлении в MVC5?
Моя проблема в этом. Пользователь выбирает элемент из раскрывающегося списка, и я загружаю частичный вид с помощью модели. Пользователь изменяет некоторые текстовые поля и нажимает кнопку, чтобы отправить частичное представление (которое находится в Html.BeginForm).
Когда я иду, чтобы исследовать модель в контроллере, модель не содержит изменений, внесенных пользователем.
Почему модель не отражает изменения, внесенные пользователем?
В главном окне:
<div id="personInfo" style="display:none;"></div>
Мой частичный вид:
@model MyProject.MyModel
@(Html.Kendo().DropDownList().Name("ddlFilters")
.AutoBind(true)
.OptionLabel("--- Select Filter ---")
.DataValueField("ID")
.DataTextField("MYFILTER")
.DataSource(ds =>
ds.Read(r => r.Action("GetPersonFilters", "Home"))
)
.Events(x => x.Select("ddlFilters_onSelect"))
)
@using (Html.BeginForm("PersonAction", "Home", FormMethod.Post, new { @class = "form-horizontal", id = "personForm" }))
{
// Strongly typed Kendo fields. Several DropDownListFor and TextBoxFor
@Html.Kendo().TextBoxFor(x => x.FirstName).HtmlAttributes(new { @class = "form-control kendoTextBox required " })
// Button to post the form data to the controller.
}
Мои Javascript:
function ddlFilters_onSelect(e) {
var itm = this.dataItem(e.item);
clearForm();
if (itm.ID > 0) {
// Ajax call to get data....
$.ajax({
url: "/Home/GetPerson",
type: "GET",
data: { "myID": itm.ID }
})
.done(function (result) {
//var aaa = data;
$("#personInfo").html(result);
})
.fail(function (xhr, status, err) {
alert(xhr.responseText);
});
}
};
Модель:
public partial class MyModel
{
public decimal ID { get; set; }
public string FirstName{ get; set; }
public string LastName{ get; set; }
public string MiddleName{ get; set; }
}
EDIT: контроллер Код:
// Initial call to main view
public ActionResult CreateNewPerson()
{
return View();
}
// Call to load Partial View initially
public PartialViewResult GetPersonInfo()
{
return PartialView("_PersonForm", new MyModel());
}
// Call to load partial view with data
public PartialViewResult GetPerson(int myID)
{
myData = GetFromDB(myID);
return PartialView("_PersonForm", myData);
}
// Method to save partial form
[HttpPost]
public ActionResult PersonAction(MyModel filter)
{
if (ModelState.IsValid)
{
// Go update DB
}
return View("CreateNewPerson");
}
Можете ли вы разместить код контроллера? –