当前位置:  开发笔记 > 后端 > 正文

MVC Html.CheckBox和表单提交问题

如何解决《MVCHtml.CheckBox和表单提交问题》经验,为你挑选了2个好方法。

在ASP.NET MVC RC中提交Html.Checkbox中的值的疯狂问题

有些值只是没有来到Request.Params

在我的表格中,我在循环中有这条线:

<%=Html.CheckBox("cb" + p.Option.Id, p.Option.IsAllowed, new { value = 6 })%>

并呈现给下一个:

    
 

    
 

    


    


    
 

提交表格后,我得到的结论如下:

Form.Params["cb17"] = {6, "false"}
Form.Params["cb18"] = {6, "false"}
Form.Params["cb19"] = {"false"}
Form.Params["cb20"] = {"6,false"}
Form.Params["cb21"] = {"false"}

在请求字符串中,一些参数显示两次(正常情况),一些只显示一次(仅隐藏字段的值).它似乎不依赖于是否检查了复选框,值是否已更改等等...

有人遇到过这样的情况吗?我该如何解决?



1> TStamper..:
   <% using(Html.BeginForm("Retrieve", "Home")) %>//Retrieve is the name of the action while Home is the name of the controller
       <% { %>
    <%foreach (var app in newApps)              { %>  
   
       <%=Html.CheckBox(""+app.ApplicationId )%>      

     
<%} %>
 
<% } %>

并在你的控制器

 List=newApps; //Database bind
 for(int i=0; i

你检查错误的原因是因为Html Checkbox帮助器为值true做了某种怪异的事情

真实的回报为:

it makes the string read "true, false"

所以你可能认为它是两个值,但它只是一个并且意味着真实

错误返回:

it makes the string read "false"



2> veggerby..:

这实际上是它应该按照规范工作的方式.

它与ASP.NET MVC无关,但如果未选中复选框,则它包含在POST集合中.

您得到两个值,因为您同时拥有一个复选框和一个具有相同名称的输入(并且您有两个值的那些很可能是选中了复选框的值).

编辑:W3C的规格


是的,它们被渲染为2个输入.但这并没有改变这样一个事实:复选框不是POST值的一部分,除非检查这是你在看Form.Params []时得到的.如果你将bool指定为你的行动的一个参数,那么它将作为"预期"工作.但那是MVC的"魔力".
推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有