ASP.NET MVC 4 не обновлял свойства модели в @Html.TextBoxFor()
У меня есть некоторые странные ошибки при отображении модели. Я создаю что-то вроде чата. Пользователи, отправляющие сообщения между вами. Когда пользователь выбрал одно сообщение в своем почтовом ящике и нажал на кнопку "Ответить", например, отправить форму отправки (). Затем отображается информация о выбранном сообщении.
И в этот момент у меня проблема. Если поля, это отображает свойства сообщения @Html.DisplayFor()
, все отлично работает. Информация о сообщении обновляется с изменением выбранного сообщения. Но если свойства отображаются с @Html.TextAreaFor
или Html.TextBox для этого не произошло с изменением выбранного сообщения.
И, если пользователь нажал на кнопку "просмотр", какая модель отображения в @Html.DisplayFor()
модель отображения обновления и обновления в @Html.DisplayFor()
много много раз. И как только нажмем кнопку "Ответить", т.е. модель дипалы в @Html.TextBoxFor()
модель перестала обновлять отображение при изменении выбранного сообщения.
Я нарисовал изображение, для облегчения понимания.:)
Большое большое спасибо!
1 ответ
Я предполагаю, что вы изменяете значение, которое вы связали TextBoxFor в действии HttpPost:
[HttpPost]
public ActionResult SomeAction(MyViewModel model)
{
model.SomeProperty = "some new value";
return View(model);
}
и в представлении у вас есть:
@Html.TextBoxFor(x => x.SomeProperty)
Если так, то это по замыслу. Помощники ввода HTML (такие как TextBoxFor, TextAreaFor, CheckBoxFor, ...) сначала ищут в ModelState при рендеринге своих значений и только после этого в самой модели. Поэтому, если вы намереваетесь изменить некоторые свойства модели в вашем действии POST, убедитесь, что вы удалили его из ModelState:
[HttpPost]
public ActionResult SomeAction(MyViewModel model)
{
ModelState.Remove("SomeProperty");
model.SomeProperty = "some new value";
return View(model);
}