视图不会影响模型更改



我有一个get操作,它有几个参数。在视图中,我有一个表格,它在采取行动后填写。Action使用接收到的参数创建模型的实例,但若参数有特殊值,那个么Action将设置为建模一些默认值,而不考虑参数。在该操作之后,返回带有模型的视图。问题是,在视图中更改模型后,会显示参数的数据,而不是来自修改后的模型。

之所以会发生这种情况,是因为在设计中,所有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)

最新更新