C# 从SelectList获取MultiSelectList的SelectListItems

C# 从SelectList获取MultiSelectList的SelectListItems,c#,asp.net-mvc-2,C#,Asp.net Mvc 2,我创建了一个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 = "

我创建了一个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"}
});
此时,
item.Text
返回
System.Web.Mvc。SelectListItem
item.Value
返回
null


如果我在配音过程中用光标选中
\u selectList
,则在
base{System.Web.Mvc.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")

};
它只是构建项目列表的助手。您完全可以直接在助手中使用IEnumerable:

@Html.DropDownList("dropdown", Model.lista)
@Html.DropDownList("dropdown2", Model.listb)
@Html.DropDownList("dropdown3", Model.listc)
编辑:更新代码。实际上,在查看SelectList源代码后,您将看到它派生自MultiSelectList->,并使用DataBinder根据给定字段计算文本和值。所以,如果您显式地给出字段名(就像listc一样),就可以使用SelectListItems列表


mz

创建和使用SelectList和SelectListItem是个好主意,但我也对我的问题感兴趣。为什么我无法获取实例的文本和值:),因为SelectList直接从Enumerable获取值。当您传递它时,它会将整个SelectListItem对象作为项读取,而不是从这些对象中读取文本和值。不确定我是否解释清楚;-)让我困惑。我可以使用我的示例在Htlm.dropdownlist(“,”viaViewData“)上显示dropdownlist,但我无法获取值。若它将整个SelectListItem对象读取为item,我认为它不应该在dropdownlist上显示所有文本,但它可以。我错了吗?我已经更新了答案,请看一看也许会澄清更多:-)
@Html.DropDownList("dropdown", Model.lista)
@Html.DropDownList("dropdown2", Model.listb)
@Html.DropDownList("dropdown3", Model.listc)