ASP.NET MVC 2 preview 1中,使用Html.CheckBox()的问题
[已解决] ASP.NET MVC 2 preview 1中,使用Html.CheckBox()的问题
当前页面:http://www.senparc.com/SZD-9
{ 收藏当前页面 }
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呀?
怎么解决呢?
如果我使用<%= Html.CheckBox("Sex") %>,就会出现两个域:
<input type="hidden" name="Sex" value="false"/>
<input type="checkbox" name="Sex" />
这个是不是ASP.NET MVC 2 preview 1的bug呀?
怎么解决呢?
最佳答案
这个不是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值。
因为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
此外如果确实不希望自动添加hidden域的话,也可以自己扩展一个Html.CheckBox()方法,具体做法可以参考这篇文章:http://www.cnblogs.com/szw/archive/2008/11/11/1305732.html
回答时间:2009/11/1 23:43:31
| 回答者:Admin
提交失败!请检查错误!错误信息:
以下信息或许对您有用:
- [已解决] 20 ASP.NET MVC 3.0自定义ViewEngine后出现错误:must d... 2012/8/25 22:02:58
- [已解决] 100 ASP.NET MVC 3 RC2下载地址?有说明文档的话更好!谢谢! 2010/12/12 12:23:00
- [已解决] 20 The type 'System.Data.Objects.DataClasse... 2010/11/25 16:51:58
- [已解决] 20 ASP.NET MVC 3 RC中的Razor语法,在VS中已经实现了智能感知和... 2010/11/14 15:51:22
- [已解决] 60 ASP.NET MVC Razor 在VS2010中智能感知的插件哪里有下载? 2010/11/3 12:53:18