这段代码过去对我很有用:
@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的参数传递。
有什么想法吗?
答案 0 :(得分:3)
我不确定这里有什么不同,假设ListTypes
是具有IEnumerable
和TypeID
属性的类型的TypeName
...构造函数重载获取属性的字符串名称仍然可用。
之前使用的是不同的构造函数,因此绑定不知道从何处获取显示值(默认情况下它将ToString
绑定的实体。)
只需使用other constructor:
@Html.DropDownListFor(
m => m.Per.TypeID,
new SelectList(
Model.ListTypes,
"TypeID",
"TypeName",
Model.Per.TypeID
)
)