Jon*_*ski 3 asp.net-mvc asp.net-mvc-3
我有一个简单的asp.net MVC 3应用程序,页面有一个表单和一个@ Html.Hidden("hiddenField").我正在通过JavaScript修改hiddenField的值,当表单根据输入提交时我可能必须返回到同一个View,但是当我这样做时,隐藏字段会预先填充来自帖子的值.
这怎么可能.据我所知,程序员完全负责使用asp.net MVC维护状态.或者Helper类是否根据请求值自动设置值?
Dar*_*rov 11
这是因为绑定HTML帮助程序时首先使用ModelState中的值,然后在模型中使用值.因此,如果您打算修改已发布的POST控制器操作中的值,则需要将其从模型状态中删除.例:
[HttpPost]
public ActionResult Index(MyViewModel model)
{
ModelState.Remove("SomePropertyThatYouWantToModify");
model.SomePropertyThatYouWantToModify = "some new value";
return View(model);
}
Run Code Online (Sandbox Code Playgroud)
现在,您@Html.HiddenFor(x => x.SomePropertyThatYouWantToModify)将呈现新值.
如果您正在使用ViewData,我的答案是完整的(但我真的希望您不是):
[HttpPost]
public ActionResult Index(FormCollection form)
{
ModelState.Remove("SomePropertyThatYouWantToModify");
ViewData["SomePropertyThatYouWantToModify"] = "some new value";
return View();
}
Run Code Online (Sandbox Code Playgroud)
并在您的视图中@Html.Hidden("SomePropertyThatYouWantToModify")应呈现新值.
| 归档时间: |
|
| 查看次数: |
3034 次 |
| 最近记录: |