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

将复选框列表传递到视图中并取出IEnDigable

将复选框列表传递到视图中并取出IEnDigable

缥缈止盈 2019-06-04 15:57:37
将复选框列表传递到视图中并取出IEnDigable我有一个将与用户关联的项目列表。一对多的关系。我想要传递到视图中的全部项目列表,这样他们就可以从那些尚未关联到它们的项目中进行选择(还可以看到那些已经关联的项目)。我想从这些创建复选框。然后,我希望将所选的内容发送回控制器以进行关联。我如何传递所有它们的列表,包括那些尚未关联的列表,并可靠地将它们传递回被关联的列表中?下面是我首先尝试的内容,但是很明显这是行不通的,因为我是根据通过AllItems集合,该集合与用户本身上的项没有连接。<div id="item-list">     @foreach (var item in Model.AllItems)     {         <div class="ui field">             <div class="ui toggle checkbox">                 <input type="checkbox" id="item-@item.ItemID" name="Items" value="@item.Active" />                 <label for="item-@item.ItemID">@item.ItemName</label>             </div>         </div>     }</div>
查看完整描述

2 回答

?
临摹微笑

TA贡献1982条经验 获得超2个赞

看起来您不会动态删除复选框,因此这个问题更容易解决。注意:如果允许客户端或脚本动态地从页面中删除复选框,下面的解决方案将不能像预期的那样工作,因为索引将不再是连续的。

MVC模型绑定并不是万无一失的,因此有时您必须帮助它。模型绑定器知道它需要绑定到一个名为Item的属性,因为输入字段的名称是Item,但它不知道Item是一个列表。因此,假设在控制器中您有一个要建模的项列表,绑定到被调用的项,那么您需要做的是帮助MVC认识到您正在绑定到一个列表。为此,请指定列表的名称和索引。

<div id="item-list">
    @for (var i = 0; i < Model.AllItems.Count; i++)
    {
        <div class="ui field">
            <div class="ui toggle checkbox">
                <input type="checkbox" id="item-@Model.AllItems[i].ItemID" name="Items[@i]" value="@Model.AllItems[i].Active" />
                <label for="item-@Model.AllItems[i].ItemID">@Model.AllItems[i].ItemName</label>
            </div>
        </div>
    }</div>

这里的要点是:

<input type="checkbox" id="item-@Model.AllItems[i].ItemID" name="Items[@i]" value="@Model.AllItems[i].Active" />

注意到项目[@i]?这是告诉模型绑定器查找名为Item的属性,并将此值绑定到I处的项索引。


查看完整回答
反对 回复 2019-06-04
  • 2 回答
  • 0 关注
  • 410 浏览

添加回答

举报

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