ASP.NET MVC CheckBoxFor为什么会生成hidden input控件

自己开发的公众号,可以领取淘宝内部优惠券

@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

 

posted @ 2014-03-12 09:15  叶de第柒章  阅读(3194)  评论(1编辑  收藏  举报