Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 如何扩展MVC2 DropDownList/ListBox帮助程序,以便在选择选项元素上包含自定义属性?_Asp.net Mvc_Asp.net Mvc 2 - Fatal编程技术网

Asp.net mvc 如何扩展MVC2 DropDownList/ListBox帮助程序,以便在选择选项元素上包含自定义属性?

Asp.net mvc 如何扩展MVC2 DropDownList/ListBox帮助程序,以便在选择选项元素上包含自定义属性?,asp.net-mvc,asp.net-mvc-2,Asp.net Mvc,Asp.net Mvc 2,在ASP.NETMVC2中,我一直认为这是一项非常简单的任务 我需要对某些选择选项元素应用背景色。要生成下拉列表,我们使用Html.DropDownList和Html.ListBox Html帮助程序,理想情况下,我希望继续使用这些帮助程序,以便在提交和重新显示表单时,不必重新绑定表单集合中的选定项 由于一些原因,我将不讨论Html帮助程序,它们是从我们编写的另一个Html帮助程序中调用的,因此它们不在视图中。代码看起来像这样 var setOfOptions = question.Answer

在ASP.NETMVC2中,我一直认为这是一项非常简单的任务

我需要对某些选择选项元素应用背景色。要生成下拉列表,我们使用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选项元素中,因为SelectListItem上没有HtmlAttributes属性。以下是我希望选择的外观

<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>

瓦尔1
瓦尔2
val3
这里最明显的答案是创建我自己的SelectListItemWithAttributes对象——但我不知道如何创建DropDownListWithAttributes对象,即使在检查了MVC2源代码之后


在这种情况下,您会怎么做?

您不需要“创建”自己的下拉帮助程序。您需要扩展默认的下拉帮助器。它非常简单,这是MVC最好的地方


我建议你检查一下的答案以了解情况

谢谢你,尼贝兹。那很有趣。实际上,我已经尝试过类似的方法(将html从html助手加载到xml对象中进行进一步操作),但这似乎有点复杂,所以我认为有更好的方法。