为了账号安全,请及时绑定邮箱和手机立即绑定

如何将IEnumerable列表传递到MVC中的控制器(包括复选框状态)?

如何将IEnumerable列表传递到MVC中的控制器(包括复选框状态)?

临摹微笑 2019-09-24 10:57:57
我有一个mvc应用程序,其中使用了这样的模型: public class BlockedIPViewModel{    public string  IP { get; set; }    public int ID { get; set; }    public bool Checked { get; set; }}现在我有一个视图来绑定这样的列表:@model IEnumerable<OnlineLotto.Web.Models.BlockedIPViewModel>@using (Html.BeginForm()){  @Html.AntiForgeryToken()}@foreach (var item in Model) {<tr>    <td>        @Html.HiddenFor(x => item.IP)                   @Html.CheckBoxFor(x => item.Checked)    </td>    <td>        @Html.DisplayFor(modelItem => item.IP)    </td></tr>}<div>    <input type="submit" value="Unblock IPs" /></div>现在,我有一个控制器可以从“提交”按钮接收操作: public ActionResult BlockedIPList(IEnumerable<BlockedIPViewModel> lstBlockedIPs) {  }但是当我进入控制器动作时,我得到的lstBlockedIPs为空值。我需要在这里获取复选框状态。请帮忙。
查看完整描述

2 回答

?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

请改用列表,然后将foreach循环替换为for循环:


@model IList<BlockedIPViewModel>


@using (Html.BeginForm()) 

    @Html.AntiForgeryToken()


    @for (var i = 0; i < Model.Count; i++) 

    {

        <tr>

            <td>

                @Html.HiddenFor(x => x[i].IP)           

                @Html.CheckBoxFor(x => x[i].Checked)

            </td>

            <td>

                @Html.DisplayFor(x => x[i].IP)

            </td>

        </tr>

    }

    <div>

        <input type="submit" value="Unblock IPs" />

    </div>

}

或者,您可以使用编辑器模板:


@model IEnumerable<BlockedIPViewModel>


@using (Html.BeginForm()) 

    @Html.AntiForgeryToken()

    @Html.EditorForModel()   

    <div>

        <input type="submit" value="Unblock IPs" />

    </div>

}

然后定义~/Views/Shared/EditorTemplates/BlockedIPViewModel.cshtml将为集合的每个元素自动呈现的模板:


@model BlockedIPViewModel

<tr>

    <td>

        @Html.HiddenFor(x => x.IP)

        @Html.CheckBoxFor(x => x.Checked)

    </td>

    <td>

        @Html.DisplayFor(x => x.IP)

    </td>

</tr>

您在控制器中获得null的原因是因为您不遵守默认模型绑定程序希望成功绑定到列表的输入字段的命名约定。我邀请你阅读following article。


阅读完后,请结合我的示例和您的示例查看生成的HTML(更具体地说是输入字段的名称)。然后进行比较,您将了解为什么您的列表不起作用。


查看完整回答
反对 回复 2019-09-24
  • 2 回答
  • 0 关注
  • 736 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信