ASP.NET MVC 2 preview 1中,使用Html.CheckBox()的问题

[已解决] ASP.NET MVC 2 preview 1中,使用Html.CheckBox()的问题

20
[Web开发 > ASP.NET > ASP.NET MVC]
ASP.NET MVC 2 preview 1中,使用Html.CheckBox()方法会多出现一个隐藏域,怎么解决?

如果我使用<%= Html.CheckBox("Sex") %>,就会出现两个域:
<input type="hidden" name="Sex" value="false"/>
<input type="checkbox" name="Sex" />

这个是不是ASP.NET MVC 2 preview 1的bug呀?
怎么解决呢?
提问时间:2009/11/1 12:04:58 | 提问者:Souidea | 悬赏:20 | 浏览:1507
最佳答案
这个不是bug,这么做是有原因的。
因为ASP.NET MVC中现在提供了绑定属性的特性,可以将这个checkbox是否被选中的状态,直接当做bool参数放入Action的参数中进行绑定,如上面的<%= Html.CheckBox("Sex") %>,直接可以这么绑定:
public ActionResult(bool sex){
   ...
   return View();
}
由于html规则的缘故,如果<input type="checkbox" name="Sex" />没有被选中,这个sex是不会被form提交的,服务器也根本不会接收到这个form["sex"]的参数。因此自动生成的<input type="hidden" name="Sex" value="false"/>其实是为了保证服务器能够接收到参数,并且当checkbox没有选中的时候,还能返回一个false值。
回答时间:2009/11/1 23:31:23 | 回答者:GaLiJiKuai
其他参考答案(1)
GaLiJiKuai说的很正确!
此外如果确实不希望自动添加hidden域的话,也可以自己扩展一个Html.CheckBox()方法,具体做法可以参考这篇文章:http://www.cnblogs.com/szw/archive/2008/11/11/1305732.html
回答时间:2009/11/1 23:43:31 | 回答者:Admin
提交失败!请检查错误!错误信息:

注:以上所有信息由网友提供,仅供交流、参考,均不代表盛派网络言论,如果有任何问题或不妥,请立即联系我们

以下信息或许对您有用: