这个问题已经在这里有一个答案:
- asp.net MVC:为什么Html.CheckBox产生附加隐藏输入 9个答案
我已经写了我的视图页上的下面的代码;
@Html.CheckBox("ChxName",true)
而我得到了以下的结果;
<input checked="checked" id="ChxName" name="ChxName" type="checkbox" value="true" />
<input name="ChxName" type="hidden" value="false" />
为什么会有命名为与复选框相同的一个输入元素?
未选中复选框不贴了,所以隐藏字段(设置为FALSE)允许模型结合仍然可以工作。
在后看看的Request.Form回来。 如果复选框被选中,您将看到:
ChxName=true&ChxName=false
模型绑定使用的第一个值。
并且,如果未选中该复选框,你会看到:
ChxName=false
ericvg解释得很好。
手动的方法是这样的:
bool IsDefault = (Request.Form["IsDefault"] != "false");
或使用包含(“真”),我觉得这有点整洁...
bool myCheckBoxValue = Server.HtmlEncode(Request.QueryString["MyCheckBoxValue"]).Contains("true");
文章来源: Razor ViewEngine HTML.Checkbox method creates a hidden input. Why? [duplicate]