我在MVC2应用程序中有以下操作:
public ActionResult Index()
{
return View(new TestModel() { MyValue = "ValueBeforePost" });
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index(TestModel m)
{
m.MyValue = "ValueSetInPost";
return View(m);
}
在我的视图中我有
<% using (MvcForm f = Html.BeginForm("Index", "Home")) %>
<% { %>
<%= Html.TextBoxFor(m => Model.MyValue) %>
<input type="submit" value="Submit" />
<% } %>
在帖子之后,我的文本框中的值没有填充我在我的操作中设置的新值(m.MyValue =“ValueSetInPost”),它似乎是从Request中保存的值中填充的。表格(在这种情况下为Request.Form [“MyValue”,即“ValueBeforePost”]。
如何更改帖子中的值?
答案 0 :(得分:1)
您需要操纵ModelState
才能生效。有一个related question有更多细节。
文本框助手将使用模型状态中的AttemptedValue来重新填充文本框,并使用发布到控制器的值。实际效果是,ModelState中的数据将覆盖您在后期操作中传递给视图的模型中的任何内容。
答案 1 :(得分:1)
您需要删除要修改它的ModelState
中的值,否则Html帮助程序将使用原始POSTed值:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index(TestModel m)
{
ModelState.Remove("MyValue");
m.MyValue = "ValueSetInPost";
return View(m);
}