视图不会影响模型更改

时间:2012-03-02 07:47:32

标签: asp.net-mvc asp.net-mvc-2

我有一个get动作,它有几个参数。在视图中我有一个表单,在获取操作后填充。 Action使用接收的参数创建模型实例,但如果参数具有特殊值,则操作设置为尽管参数建模某些默认值。在该操作之后返回视图与模型。 问题是在View中更改模型后显示参数的数据,而不是来自修改后的模型。

1 个答案:

答案 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)