c# - MVC 多个 DropDownLists from 1 List<SelectListItem>

标签 c# asp.net-mvc asp.net-mvc-4 html.dropdownlistfor

背景:我的页面上有 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/

相关文章:

javascript - 将 JavaScript var 保存到 ASP.NET MVC 3 Razor 中的 C# 模型中?

javascript - 无法使用 JQuery 删除搜索文本框的内容

c# - GetAsync 请求返回空内容

c# - 从反射树切换到表达式树

javascript - 如何调用 Controller 方法并更新 View ?

c# - 仅在 Windows XP 上异步接收时出现 UdpClient 异常

c# - 异常 "There is no ViewData item of type ' IEnumerable<SelectListItem>"MVC

c# - 在 ASP.NET MVC 中通过子操作设置页面标题

C# 计算机名称或网络上计算机的 ip 驱动器盘符

C# - 使用 SSL 保护 `sockets`