我有一个get动作,它有几个参数。在视图中我有一个表单,在获取操作后填充。 Action使用接收的参数创建模型实例,但如果参数具有特殊值,则操作设置为尽管参数建模某些默认值。在该操作之后返回视图与模型。 问题是在View中更改模型后显示参数的数据,而不是来自修改后的模型。
答案 0 :(得分:3)
这是因为,根据设计,所有HTML帮助程序在绑定时首先查看ModelState,然后在模型本身中查看。因此,如果您打算修改属于POST请求的某些值,则需要先将其从ModelState中删除,如果您希望此更改反映在视图中:
[HttpPost]
public ActionResult SomeAction(MyViewModel model)
{
// We remove the Bar property that was part of the request because
// we modify its value here
ModelState.Remove("Bar");
model.Bar = "Some modified value";
return View(model);
}
这假设在相应的视图中有一个输入字段:
@Html.EditorFor(x => x.Bar)