如何使用IEnumerable而不是List类型构建SelectList

时间:2014-02-19 14:18:28

标签: c# asp.net-mvc-4

这段代码过去对我很有用:

@Html.DropDownListFor(
 m => m.Per.TypeID,
 new SelectList(
   listItems,
   "Value",
   "Text",
    Model.Per.TypeID
    )
)

但是这次我想用 IEnumerable 来构建 SelectList ,所以我尝试了以下内容:

@Html.DropDownListFor(
 m => m.Per.TypeID,
 new SelectList(
     Model.ListTypes,
     Model.Per.TypeID
 )
)

问题是,现在我的输出看起来不正确:SelectList中的每个项目都只读为“ ListType

而不是“值”“文字” Model.ListTypes包含 TypeID TypeName 属性,但我不明白如何将这些作为SelectList的参数传递。

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

我不确定这里有什么不同,假设ListTypes是具有IEnumerableTypeID属性的类型的TypeName ...构造函数重载获取属性的字符串名称仍然可用。

之前使用的是不同的构造函数,因此绑定不知道从何处获取显示值(默认情况下它将ToString绑定的实体。)

只需使用other constructor

@Html.DropDownListFor(
 m => m.Per.TypeID,
 new SelectList(
     Model.ListTypes,
     "TypeID",
     "TypeName",
     Model.Per.TypeID
 )
)