ASP.NET MVC 4应用程序允许标记表行。剃刀视图包含:
@using (Html.BeginForm())
{
<table class="table table-hover">
@foreach (var f in Model.Failid)
{
<tr>
<td>@f.FailiNimi</td>
<td>
@Html.CheckBox("c" + f.Id.ToString())
</td>
</tr>
}
</table>
<input type="submit" class="btn btn-success" />
@Html.AntiForgeryToken()
}
如果按下提交按钮,浏览器会发送带身体的帖子请求
c40=false&c9=true&c9=false&c9=false&c10=false&c13=false
控制器签名是
[HttpPost, ValidateAntiForgeryToken]
public ActionResult Failid(NameValueCollection nv)
{
...
然而,控制器中的nv参数值为空。复选框名称不作为控制器参数传递。
如何获取控制器中已检查复选框名称的列表?
答案 0 :(得分:1)
你的MVC控制器应该采用FormCollection:
HttpPost, ValidateAntiForgeryToken]
public ActionResult Failid(FormCollection nv)
如果仍然没有返回,请验证您的名称是否符合您的预期。另外,我不记得了,但你必须用复选框设置自己的值吗?为了发布内容,必须指定一个值,并将此值发送回服务器,然后由MVC转换为布尔值。
答案 1 :(得分:0)
那么,为什么它会在namevaluecollection中显示?尝试使用Request.Form.AllKeys和Request.Form.GetValues(key)