加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-15 23:22:29 所属栏目:asp.Net 来源:网络整理
导读:在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
在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"

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读