栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

请改用列表,然后将

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的原因是因为您不遵守默认模型绑定程序希望成功绑定到列表的输入字段的命名约定。我邀请你阅读

followingarticle

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



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/506784.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号