我在显示模型时遇到一些奇怪的错误。我正在创建类似聊天的内容。用户在您自己之间发送消息。例如,当用户在其收件箱中选择一条消息并单击了“答案”按钮时,则使用send send()表单。然后,将显示有关所选消息的信息。
在这一刻,我遇到了问题。如果显示消息属性的字段为@Html.DisplayFor()
,则一切正常。消息信息随所选消息的更改而刷新。但是,如果使用@Html.TextAreaFor
或Html.TextBoxFor显示的属性不是在更改所选消息时发生的。
并且,如果用户单击“查看”按钮,则显示模型中的@Html.DisplayFor()
模型显示刷新,并且刷新@Html.DisplayFor()
很多次。并且,一旦单击“答案”按钮,即中的二元模型@Html.TextBoxFor()
,模型就会停止以刷新更改所选消息时的显示。
我画了一幅图像,以便于理解。:)
我猜您正在修改在HttpPost操作上绑定TextBoxFor的值:
[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);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句