And*_*ach 14 checkbox asp.net-mvc
在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" />
Run Code Online (Sandbox Code Playgroud)
提交表格后,我得到的结论如下:
Form.Params["cb17"] = {6, "false"}
Form.Params["cb18"] = {6, "false"}
Form.Params["cb19"] = {"false"}
Form.Params["cb20"] = {"6,false"}
Form.Params["cb21"] = {"false"}
Run Code Online (Sandbox Code Playgroud)
在请求字符串中,一些参数显示两次(正常情况),一些只显示一次(仅隐藏字段的值).它似乎不依赖于是否检查了复选框,值是否已更改等等...
有人遇到过这样的情况吗?我该如何解决?
TSt*_*per 16
<% 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"/>
<% } %>
Run Code Online (Sandbox Code Playgroud)
并在你的控制器
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
}
Run Code Online (Sandbox Code Playgroud)
你检查错误的原因是因为Html Checkbox帮助器为值true做了某种怪异的事情
真实的回报为:
it makes the string read "true, false"
Run Code Online (Sandbox Code Playgroud)
所以你可能认为它是两个值,但它只是一个并且意味着真实
错误返回:
it makes the string read "false"
Run Code Online (Sandbox Code Playgroud)