@Html.CheckBoxFor(m => m.Bool)
使用CheckBoxFor方法得到的html代码会是下面这个样子
<input checked="checked" data-val="true" data-val-required="Bool 字段是必需的。" id="Bool" name="Bool" type="checkbox" value="true"> <input name="Bool" type="hidden" value="false">
在生成一个复选框的同时会同时得到一个type为hidden的input控件,复选框的value为true,hidden的value则为false,两个控件拥有相同的name属性。
为什么会有两个name值相同的input呢,如果我们选中该复选框不是把true和false都传递给服务端了。
1.未选中checkbox
未选中复选框比较好理解传递的就是hidden控件的value值,此时服务端得到的是false。如果没有hidden,服务端会得到null。
2.选中checkbox
选中的时候服务得到的值就是"true,false",此时会使用true值而忽略掉false