asp.net-mvc – HTML.CheckBox(string)计算为两个HTML元素而不是
代码
<%=Html.CheckBox("SendEmail") %> 在呈现时评估两个HTML元素 <input id="SendEmail" name="SendEmail" type="checkbox" value="true" /> <input name="SendEmail" type="hidden" value="false" /> 这是一个错误吗?还是按设计?如果是设计,为什么? 解决方法
我今天早上遇到了一些问题,从我的MVC应用程序中的复选框组中检索选定的值.我把它发给了我的团队,并认为我会与其他人分享.
回发复选框的值时,所有浏览器的标准行为是从帖子中完全省略未经检查的复选框.因此,如果您有一个未选中的复选框,则在Request.Form中没有显示任何内容.这是大多数开发人员所熟知的一个众所周知的现象. 在ASP.Net MVC中,当您使用Html.Checkbox时,它会尝试解决此问题,并确保您为未选中的复选框返回一个值(在本例中为“false”).这是通过添加包含值’false’的隐藏字段来完成的. 例如. <%= Html.CheckBox("Sites",s.Selected,new { value = s.Value })%> 生成HTML <input id="Sites" name="Sites" type="checkbox" value="1" /><input name="Sites" type="hidden" value="false" /> 这一切都很好,直到您尝试使用复选框组.这是一个具有相同名称的复选框,其中值以单个逗号分隔的字符串发回. 这是视图代码: <% foreach(var s in Model) { %> <li><%= Html.CheckBox("Sites",new { value = s.Value })%> <label><%= s.Name %></label> </li> <% } %> 适当的控制器动作: 的[AcceptVerbs(HttpVerbs.Post)] 不幸的是,因为Html.Checkbox也会产生这个隐藏的字段值,结果数组不仅包含所选复选框的值,还包含每个未选中复选框的“false”.你得到一个看起来像这样的数组: [0] 'false' [1] 'false' [2] '110' [3] '50' [4] 'false' 其中“false”表示未选中的复选框,而“整数”是所选复选框的值. 如果您只有复选框值的整数并希望将结果定义为整数数组,这可以将代码抛出相当多,如下所示: public ActionResult Edit(int Id,int [] Sites) 这会导致抛出异常,因为它无法将字符串值’false’转换为整数. 解决方案非常简单,只需避免使用Html.Checkbox并在视图代码中手动创建复选框,如下所示: <% foreach(var s in Model) { %> <li><input type="checkbox" name="Sites" value="<%=s.Value%>" <% if (s.Selected) { %>checked="checked"<% } %> /> <label><%= s.Name %></label> </li> <% } %> 希望这有助于其他人! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-core – 基本bproject create无法创建优质Nuget缓存
- 如何获取asp.net Windows身份验证中的用户详细信息
- DevExpress v17.2新版亮点—ASP.NET篇(三)
- asp.net-mvc – MVC4捆绑使用Scripts.Render时速度慢
- asp.net-mvc-4 – 在一个项目中混合Web Api和ASP.Net MVC页
- asp.net-mvc-3 – 使用javascript代码访问viewbag
- asp.net-mvc – 在ascx文件中使用Html.RenderPartial()
- asp.net-mvc – Html.Partial或Html.RenderPartial与MVC3?
- asp.net-mvc – ASP.net MVC 3教程推荐
- asp.net-mvc – ASPNET MVC中的Modelbinding数据库实体
- asp.net-mvc – Sitecore 6.6,MVC 3和System.Web
- asp.net – 增加IIS7 / Win7 Pro上的最大上传文件
- asp.net-mvc – MVC查看可空的日期字段格式
- asp.net – 如何检测脚本管理器是否在页面上?
- 如何通过GSM调制解调器从ASP.NET应用程序发送SMS
- asp.net – 跨虚拟目录的表单身份验证
- asp.net-core – 使用Entity Framework 7处理乐观
- asp.net – 如何验证动态创建的控件?
- 在F#中开发ASP.NET和ASP.NET MVC应用程序的缺点?
- asp.net-core-mvc – 如何考虑请求和响应范围标头