ASP MVC 3:如何将样式应用于下拉列表的某些项目?

时间:2011-09-16 12:19:32

标签: asp.net-mvc-3 web

我有以下要求。我有一个下拉显示机器零件。将活动属性设置为“false”的部分应以粗体红色文本显示,而其他部分以常规文本显示。

问题是SelectItem类没有html属性来设置它,只有Dropdown助手,但是它应用于整个列表,我只想要一些项目。

2 个答案:

答案 0 :(得分:2)

我刚才有这个要求。好消息是解决方案很简单。坏消息是它涉及从MVC3源复制/粘贴很多代码。

请找到代码pasted here,因为粘贴内联真的太多了。

它包含一个接口IHtmlAttributes(对于可能携带此类数据的对象),类SelectListItemWithAttributes(您将创建此类的对象),以及您需要的静态类粘贴很多扩展方法。

执行此操作后,它非常简单:

var item = new SelectListItemWithAttributes(new { @class = "inactive" });
item.Text = "Foo";
item.Value = "Bar";

您将所有这些放入任何IEnumerable<SelectListItemWithAttributes>,调用粘贴到静态助手类中的DropDownList方法系列之一,这就是它的所有内容。

答案 1 :(得分:-1)

您可以使用jquery轻松实现此目的:

<script type="text/javascript">
    $(document).ready(function () {        
        $('#IdOfYourDropDown option:disabled').css('color', 'red');
    });
</script>

它选择下拉列表中禁用的所有选项并添加一些内联样式,如果需要,还可以添加一个css类。