asp.net-mvc – MVC Html.CheckBox和表单提交问题

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – MVC Html.CheckBox和表单提交问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在ASP.NET MVC RC中的 Html.CheckBox中提交值的疯狂问题

一些值只是不来Request.Params

在我的表格中,我在循环中有这一行:
<%= Html.CheckBox(“cb”p.Option.Id,p.Option.IsAllowed,new {value = 6})%>

并呈现给下一个:

<input checked="checked" id="cb17" name="cb17" type="checkBox" value="6" />
<input name="cb17" type="hidden" value="false" /> 

    <input checked="checked" id="cb18" name="cb18" type="checkBox" value="6" />
<input name="cb18" type="hidden" value="false" /> 

    <input id="cb19" name="cb19" type="checkBox" value="6" />
<input name="cb19" type="hidden" value="false" />

    <input id="cb20" name="cb20" type="checkBox" value="6" />
<input name="cb20" type="hidden" value="false" />

    <input checked="checked" id="cb21" name="cb21" type="checkBox" value="6" />
<input name="cb21" type="hidden" value="false" />

提交表单后,我会得到以下内容

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

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

有人面对这样的情况吗?我如何解决

解决方法

<% 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)              { %>  
  <tr> 
       <td><%=Html.CheckBox(""+app.ApplicationId )%></td>      

   </tr>  
<%} %>
 <input type"submit"/>
<% } %>

并在您的控制器

List<app>=newApps; //Database bind
 for(int i=0; i<app.Count;i++)
 {

    var checkBox=Request.Form[""+app[i].ApplicationId];
    if(checkBox!="false")// if not false then true,false is returned
 }

你检查错误的原因是因为Html CheckBox帮助者为某种价值真的做了一些奇怪的事情

真的返回为:

it makes the string read "true,false"

所以你可能以为这是两个价值观,但它只是一个,意思是真实的

虚假回报为:

it makes the string read "false"

猜你在找的asp.Net相关文章