0

我创建了一个 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.SelectListItemitem.Value返回null

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

4

1 回答 1

0

如果你想使用 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")

};

它只是构建项目列表的帮手。您绝对可以直接在帮助程序中使用 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基于给定字段评估文本和值。因此,如果您明确给出字段名称(就像 listc 一样),您可以使用 SelectListItems 列表。

mz

于 2013-03-13T16:42:20.547 回答