【发布时间】:2011-05-14 12:46:29
【问题描述】:
我一直坚持我认为在 ASP.Net MVC2 中将是一项非常简单的任务。
我需要为某些 SELECT OPTION 元素应用背景颜色。要生成下拉列表,我们使用 Html.DropDownList 和 Html.ListBox html 帮助程序,理想情况下我想继续使用这些,所以我不必处理重新绑定表单集合中的选定项目时表单已提交并重新显示。
由于我不会讨论的原因,Html 帮助器是从我们编写的另一个 html 帮助器中调用的,因此它们不在视图中。代码长这样……
var setOfOptions = question.AnswerList.Values.Select(x => new SelectListItem(){
Value = x.ID.ToString(),
Text = x.Caption + " - " + x.Style,
Selected = question.Answers.Contains((object)x.ID)
});
answerlistHtml = html.DropDownList(question.GetQualifiedId(), setOfOptions, "Please select...", new { @class = "superselect disabled" }).ToHtmlString();
因此,我们将“AnswerListValue”对象的集合转换为 IEnumerable,并从中生成 SELECT html。但是,这使我无法将 x.Style 放入 SELECT OPTION 元素中 - 因为 SelectListItem 上没有 HtmlAttributes 属性。这就是我希望 SELECT 的样子...
<select id="whatever" name="whatever">
<option value="1" class="mystyle1">val1</option>
<option value="2" class="mystyle2">val2</option>
<option value="3" class="mystyle3">val3</option>
</select>
这里显而易见的答案是创建我自己的 SelectListItemWithAttributes 对象 - 但我无法弄清楚如何创建 DropDownListWithAttributes 对象,即使在检查了 MVC2 源代码之后也是如此。
在这种情况下你会怎么做?
【问题讨论】: