我在我的视图页面上写了以下代码;
@Html.CheckBox("ChxName",true)
我得到了以下结果;
<input checked="checked" id="ChxName" name="ChxName" type="checkbox" value="true" />
<input name="ChxName" type="hidden" value="false" />
为什么有一个与复选框名称相同的输入元素?
答案 0 :(得分:48)
未发布未选中复选框,因此隐藏字段(设置为false)允许模型绑定仍然有效。
查看帖子背面的Request.Form。如果选中该复选框,您将看到:
ChxName=true&ChxName=false
模型绑定器使用第一个值。
并且,如果未选中此框,您将看到:
ChxName=false
答案 1 :(得分:3)
手动方法是:
bool IsDefault = (Request.Form["IsDefault"] != "false");
答案 2 :(得分:3)
或者使用Contains(“true”),我发现它有点整洁......
bool myCheckBoxValue = Server.HtmlEncode(Request.QueryString["MyCheckBoxValue"]).Contains("true");