【问题标题】:How to get list of checked boxes in controller如何获取控制器中的复选框列表
【发布时间】:2016-12-10 19:15:32
【问题描述】:

ASP.NET MVC 4 应用程序允许标记表行。 Razor 视图包含:

@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()

        }

如果提交按钮被按下,浏览器会发送带有 body 的 post 请求

c40=false&c9=true&c9=false&c9=false&c10=false&c13=false

控制器签名是

[HttpPost, ValidateAntiForgeryToken]
public ActionResult Failid(NameValueCollection nv)
{
...

但是控制器中的 nv 参数值为空。复选框名称不作为控制器参数传递。

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

【问题讨论】:

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


【解决方案1】:

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

HttpPost, ValidateAntiForgeryToken]
public ActionResult Failid(FormCollection nv)

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多