从SelectList中获取MultiSelectList的SelectListItems

本文关键字:SelectListItems MultiSelectList 获取 SelectList | 更新日期: 2023-09-27 18:03:39

我已经创建了一个SelectList并按如下方式初始化:

SelectList _selectList = new SelectList(new List<SelectListItem>
{
    new SelectListItem{Text = "aa", Value="bb"},
    new SelectListItem{Text = "cc", Value = "dd"},
    new SelectListItem{Text = "gg", Value = "ff"}
});

这是一个样品。通常,我添加15或20个SelectListItems)

然后我试着得到这个_selectList实例的文本和值,以便设置一个实例:

foreach (var item in _selectList)
{
    var a = item.Text;
    var b = item.Value;
}

此时,item.Text返回System.Web.Mvc.SelectListItem, item.Value返回null

如果我在调试期间用光标检查_selectList,所有SelectListItems及其在base{System.Web.Mvc.MultiSelectList}下的值,我无法获得这些值。问题是"我怎么能?"

从SelectList中获取MultiSelectList的SelectListItems

如果你想使用SelectList,你可以这样使用:

var model = new IndexModel()
{
    lista = new SelectList(new string[] { "BMW","Volvo" }),
    listb = new SelectListItem[]
        {
            new SelectListItem {Text = "aa", Value = "bb"},
            new SelectListItem {Text = "cc", Value = "dd"},
            new SelectListItem {Text = "gg", Value = "ff"}
        },
     listc = new SelectList(new SelectListItem[]
              {
                       new SelectListItem {Text = "aa", Value = "bb"},
                       new SelectListItem {Text = "cc", Value = "dd"},
                       new SelectListItem {Text = "gg", Value = "ff"}
              }, "Value", "Text")
};

这只是帮助建立项目列表。你可以直接在helper中使用IEnumerable:

@Html.DropDownList("dropdown", Model.lista)
@Html.DropDownList("dropdown2", Model.listb)
@Html.DropDownList("dropdown3", Model.listc)

编辑:更新的代码。实际上,在查看SelectList源后,您将看到它派生自MultiSelectList -> http://aspnetwebstack.codeplex.com/SourceControl/changeset/view/4284ca5270b9#src/System.Web.Mvc/MultiSelectList.cs,并使用DataBinder根据给定字段eval文本和值。因此,如果您显式地给出字段名称(就像listc一样),您可以让它与SelectListItems列表一起工作。

mz