背景:我的页面上有 4 个下拉列表,它们都使用一个 SelectListItem
列表从中提取数据。所有这 4 个下拉列表将始终包含完全相同的元素。每个下拉列表的顶部都有一个空元素。
问题:如果我没有从列表中选择呈现第二个的项目,当页面加载第二个列表时会自动选择在第一个列表中选择的项目。这是因为(我认为)列表有一个 SelectListItem
,其中 Selected = true
,它只在第二个列表中使用那个。
有什么方法可以将一个列表源用于多个下拉列表?我不想将此列表复制 4 次,除非我绝对必须...
代码:
//this is the list source
public IEnumerable<SelectListItem> PossibleItems { get; set; }
//this is the code on my .cshtml page
@Html.DropDownListFor(x => x.SelectedItem1, Model.PossibleItems)
@Html.DropDownListFor(x => x.SelectedItem2, Model.PossibleItems)
@Html.DropDownListFor(x => x.SelectedItem3, Model.PossibleItems)
@Html.DropDownListFor(x => x.SelectedItem4, Model.PossibleItems)
最佳答案
在您的列表中,需要为四个下拉列表中的每一个创建不同的 SelectList 实体,如下所示:
@Html.DropDownListFor(x => x.SelectedItem1,
new SelectList(Model.PossibleItems, "dataValue", "textValue", Model.SelectedItem1))
@Html.DropDownListFor(x => x.SelectedItem2, Model.PossibleItems)
new SelectList(Model.PossibleItems, "dataValue", "textValue", Model.SelectedItem2))
@Html.DropDownListFor(x => x.SelectedItem3, Model.PossibleItems)
new SelectList(Model.PossibleItems, "dataValue", "textValue", Model.SelectedItem3))
@Html.DropDownListFor(x => x.SelectedItem4, Model.PossibleItems)
new SelectList(Model.PossibleItems, "dataValue", "textValue", Model.SelectedItem4))
在此示例中,“dataValue”和“textValue”是 SelectListItem 对象的属性,它们对应于下拉选项的值和文本元素。
关于c# - MVC 多个 DropDownLists from 1 List<SelectListItem>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18880662/