我正在尝试创建一个下拉列表,其中禁用了一些选项,因此无法选择它们。这是我的代码:
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");
但是,为禁用的SelectListItem生成的HTML仅仅是:
<option value=""></option>
如何生成以下HTML
<option disabled="disabled"></option>
谢谢!
答案 0 :(得分:4)
Disabled
属性仅在您使用IEnumerable<SelectListItem>
而非SelectList
时才会得到尊重(在SelectList
构造函数中,您只需设置Value
的属性}和Text
)无论如何,当帮助者只接受IEnumerable<SelectListItem>
SelectList
然后从中创建IEnumerable<SelectListItem>
几乎没有意义
var places = new List<SelectListItem>
{
new SelectListItem { Selected = false, Text = "Virgin Islands", Value = "Virgin Islands"},
new SelectListItem { Selected = false, Text = "", Value = "", Disabled= true},
....
};
然后在帮手
@Html.DropDownList(m => m.YourProperty, model.places) // or (IEnumerable<SelectListItem>)ViewBag.places
旁注:SelectList
确实有一个重载的构造函数,它将IEnumerable disabledValues
作为参数(refer documentation)
答案 1 :(得分:2)
您没有考虑Disabled
的{{1}}属性,所以 -
将模型作为typeof
返回SelectListItem
而不是
IEnumerable<SelectListItem>
然后绑定为 -
SelectList
希望这有帮助。