.Net MVC 5.2.3:如何从SelectListItem中创建禁用的选项?

cur*_*us1 3 asp.net-mvc asp.net-mvc-5

我正在尝试创建一个禁用了一些选项的下拉列表,以使它们无法选择。这是我的代码:

var places = new SelectList(new List<SelectListItem>
{
    new SelectListItem { Selected = false, Text = "Virgin Islands", Value = "Virgin Islands"},
    new SelectListItem { Selected = false, Text = "", Value = "", Disabled= true},
    new SelectListItem { Selected = false, Text = "Canada", Value = "Canada", Disabled= true},
    new SelectListItem { Selected = false, Text = "", Value = "", Disabled= true},
    new SelectListItem { Selected = false, Text = "Other", Value = "Other"},
}, "Value", "Text");
Run Code Online (Sandbox Code Playgroud)

但是,为禁用的SelectListItem生成的HTML仅仅是:

<option value=""></option>
Run Code Online (Sandbox Code Playgroud)

我如何生成以下HTML

<option disabled="disabled"></option>
Run Code Online (Sandbox Code Playgroud)

从SelectListItem?

谢谢!

小智 6

Disabled仅当您使用IEnumerable<SelectListItem>时不使用该属性SelectList(在SelectList构造器中,您仅设置和的属性),并且在任何情况下,当助手仅接受该属性时Value,再创建该属性Text几乎没有意义IEnumerable<SelectListItem>SelectListIEnumerable<SelectListItem>

var places = new List<SelectListItem>
{
    new SelectListItem { Selected = false, Text = "Virgin Islands", Value = "Virgin Islands"},
    new SelectListItem { Selected = false, Text = "", Value = "", Disabled= true},
    ....
};
Run Code Online (Sandbox Code Playgroud)

然后在助手中

@Html.DropDownList(m => m.YourProperty, model.places) // or (IEnumerable<SelectListItem>)ViewBag.places
Run Code Online (Sandbox Code Playgroud)

旁注:SelectList确实有一个IEnumerable disabledValues以参数为重载的构造函数(请参阅文档