我有ASP MVC 3应用程序,
在我的模型中,我有IsGoodMode bool属性。
并在我的视图
上使用此属性,例如<%: Html.HiddenFor(m => m.IsGoodMode)%>
当我第一次打开页面时,我的IsGoodMode
包含false
值。
我在javascript中将IsGoodMode
值从false
更改为true
。
我按下提交按钮和控制器获取IsGoodMode
的模型包含真值。
我将IsGoodMode
更改为false
;
但在浏览页面上,IsGoodMode仍具有真正的价值。
[HttpPost]
public ActionResult Index(SettingsModel model)
{
model.IsGoodMode = false;
return View(model);
}
为什么会这样? 发回后MVC3的绑定属性如何?
由于
答案 0 :(得分:2)
关于ModelState的MSDN文章至少可以说是简短的,但它是由ModelState负责的。
处理@ Html.BeginForm()后,控件将由当前模型的ModelState中的值填充(如果适用)。
您可以通过在操作方法中调用ModelState.Clear()来覆盖此行为。
答案 1 :(得分:1)
我试图在我的本地复制相同的行为。我觉得Html.HiddenFor()帮助方法有些疯狂。我通过使用稍微不同的方法来实现功能。
方法:1
用常规的html隐藏输入元素替换Html.HiddenFor()。我使用了以下标记,它起作用了:
<input type="hidden" value="<%= Model.IsActive %>" />
方法:2
<%= Html.HiddenFor(x => Model.IsActive) %>
您可以尝试这两种方法中的任何一种,我的猜测是它也应该适合您。