猿问

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

将复选框列表传递到视图中并取出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>


缥缈止盈
浏览 411回答 2
2回答

临摹微笑

看起来您不会动态删除复选框,因此这个问题更容易解决。注意:如果允许客户端或脚本动态地从页面中删除复选框,下面的解决方案将不能像预期的那样工作,因为索引将不再是连续的。MVC模型绑定并不是万无一失的,因此有时您必须帮助它。模型绑定器知道它需要绑定到一个名为Item的属性,因为输入字段的名称是Item,但它不知道Item是一个列表。因此,假设在控制器中您有一个要建模的项列表,绑定到被调用的项,那么您需要做的是帮助MVC认识到您正在绑定到一个列表。为此,请指定列表的名称和索引。<div&nbsp;id="item-list"> &nbsp;&nbsp;&nbsp;&nbsp;@for&nbsp;(var&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;<&nbsp;Model.AllItems.Count;&nbsp;i++) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<div&nbsp;class="ui&nbsp;field"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<div&nbsp;class="ui&nbsp;toggle&nbsp;checkbox"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input&nbsp;type="checkbox"&nbsp;id="item-@Model.AllItems[i].ItemID"&nbsp;name="Items[@i]"&nbsp;value="@Model.AllItems[i].Active"&nbsp;/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<label&nbsp;for="item-@Model.AllItems[i].ItemID">@Model.AllItems[i].ItemName</label> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div> &nbsp;&nbsp;&nbsp;&nbsp;}</div>这里的要点是:<input type="checkbox" id="item-@Model.AllItems[i].ItemID" name="Items[@i]" value="@Model.AllItems[i].Active" />注意到项目[@i]?这是告诉模型绑定器查找名为Item的属性,并将此值绑定到I处的项索引。
随时随地看视频慕课网APP
我要回答