如何获取控制器中的复选框列表

时间:2016-12-10 19:15:33

标签: c# asp.net asp.net-mvc asp.net-mvc-4 razor

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参数值为空。复选框名称不作为控制器参数传递。

如何获取控制器中已检查复选框名称的列表?

2 个答案:

答案 0 :(得分:1)

你的MVC控制器应该采用FormCollection:

HttpPost, ValidateAntiForgeryToken]
public ActionResult Failid(FormCollection nv)

如果仍然没有返回,请验证您的名称是否符合您的预期。另外,我不记得了,但你必须用复选框设置自己的值吗?为了发布内容,必须指定一个值,并将此值发送回服务器,然后由MVC转换为布尔值。

答案 1 :(得分:0)

那么,为什么它会在namevaluecollection中显示?尝试使用Request.Form.AllKeys和Request.Form.GetValues(key)