Razor ViewEngine HTML.Checkbox方法创build一个隐藏的input。 为什么?
我在我的视图页面上写下了下面的代码。
@Html.CheckBox("ChxName",true)
我得到了以下结果。
<input checked="checked" id="ChxName" name="ChxName" type="checkbox" value="true" /> <input name="ChxName" type="hidden" value="false" />
为什么有一个与checkbox命名为相同的input元素?
未勾选的checkbox不会发布,所以隐藏的字段(设置为false)允许模型绑定仍然工作。
看看post后面的Request.Form。 如果checkbox被选中,你会看到:
ChxName=true&ChxName=false
模型联编程序使用第一个值。
如果该框没有被选中,你会看到:
ChxName=false
ericvg解释得很好。
手动方法是这样的:
bool IsDefault = (Request.Form["IsDefault"] != "false");
或者使用包含(“真”),我觉得有点整洁…
bool myCheckBoxValue = Server.HtmlEncode(Request.QueryString["MyCheckBoxValue"]).Contains("true");