我正在使用ASP.NET MVC,并且正在尝试使用HtmlHelper.DropDownListFor方法呈现选择列表,如下所示:
<%= Html.DropDownListFor(x => x.AllTopics, SelectListHelper.GetSelectListItems(Model.AllTopics), "Select a Topic", new { id = "allTopics", @class = "topic-dropdown" })%>
其中SelectListHelper只返回我们传入的任何集合中的IList<SelectListItem>
。这适用于简单的事情,但我希望能够为每个选项添加title属性标记(不 选择列表本身)。但是DropDownListFor只接受IEnumerable<SelectListItem>
,并且SelectListItem没有我可以放在title属性中的任何地方。
有没有办法在没有提到DropDownListFor方法的情况下执行此操作并手动写出选择列表和每个元素?
答案 0 :(得分:4)
DropDownList和衍生产品不支持您正在寻找的功能。但您也可以简单地处理DropDownList返回的字符串。
<%=
Html.DropDownListFor(x => x.AllTopics,
SelectListHelper.GetSelectListItems(Model.AllTopics),
"Select a Topic",
new { id = "allTopics", @class = "topic-dropdown" })
.Replace("<option", "<option attr=\"value\"")
%>
答案 1 :(得分:2)
查看MVC源代码,DropDownListFor
使用DropDownList
,SelectInternal
使用ListItemToOption
,它使用{{1}},它包含对TagBuilder的调用。您可以修改并包含此源以在构建实际选项标记时接受对TagBuilder的额外调用。