从控制器到视图的 MVC EF 多选下拉列表仅选择一项

问题描述 投票:0回答:1

我有一个多选下拉菜单,我可以很好地从视图获取值到控制器。为了返回到用户所做选择的视图,我根据收到的数组加载 SelectListItems Selected 字段。但是,当我的视图出现时,只有第一个项目被选中。

IOW,如果我跳过前三项并选择接下来的三项,我希望第 3、4、5 项为真。而且,当我在构建下拉列表之前立即显示这三个 SelectListItems 的 Selected 字段的值时,它们确实显示为 true。但是,只有第 3 项在下拉列表中显示为已选中。当我检查应该检查的项目之一时,它显示 Selected 为 false。

Has 3 - @Model.HasSKUList[3].Selected.ToString()
Has 4 - @Model.HasSKUList[4].Selected.ToString()
Has 5 - @Model.HasSKUList[5].Selected.ToString()
                @Html.DropDownList("HasSKU_ID", Model.HasSKUList, "Select SKU...",
                new { @class = "selectpicker", data_style_base = "form-control", data_width = "100%", data_size = "10", data_dropdown_align_right = "auto", multiple = "multiple", title = "Select SKU(s)...", data_selected_text_format = "count > 3", data_live_search = "true" })

我不知道下一步该看哪里。

---编辑--- 我希望人们会要求查看我的控制器代码。但是,由于我已经验证 SelectListItems 实际上确实为 Selected 保留了正确的值,所以我认为控制器代码不是必需的。显然,如果需要,我会在这里发布。但是,在这种情况下,我认为这只是一种干扰。 @Model.HasSKUList[4].Selected.ToString() 确实显示为 true。为什么下拉多选不兑现?

model-view-controller multi-select
1个回答
0
投票

解决方案是一个列表框。

我的同事发现,虽然 DropDownList 让你设置多个参数,它会让你选择多个项目,并在提交时发送这些项目,但 MVC 确实希望 DropDownList 只选择一个项目。当您调用构建一个新项目时,它只会选择一个选定项目,并将所有其他项目变为 false。

当我们将其更改为 ListBox 时,它起作用了。它甚至看起来仍然像一个下拉菜单。

我们有另一段代码,其中 DropDownList 已经工作多年。我们不知道如何或为什么。我们只是暂时不要打扰它。如果它坏了,我们现在知道修复方法了。

© www.soinside.com 2019 - 2024. All rights reserved.