我有一个填充/工作正常的SelectList
。
我有一项新要求,即为某些用户禁用该列表。所以我在ViewModel
中添加了一个新属性,LockSelectList
。此属性在控制器中设置(并且有效)。
但是,当呈现列表时,它始终处于禁用状态。
我试过了
@Html.DropDownListFor(x => x.Id, Model.AllLocations, new {disabled = Model.LockLocationList? "true" : "false" })
@Html.DropDownListFor(x => x.Id, Model.AllLocations, new {disabled = Model.LockLocationList? "disabled" : "false" })
@Html.DropDownListFor(x => x.Id, Model.AllLocations, new {disabled = Model.LockLocationList? "disabled" : "" })
但它们都呈现正确的 HTML,但似乎禁用属性的存在,无论值如何都会禁用列表。那么我该对代码进行哪些调整才能使其工作呢?(最好不使用jQuery来处理事件后的启用/禁用)
我建议按照以下方式进行操作...
@if(Model.LockLocationList)
{
@Html.DropDownListFor(x => x.Id, Model.AllLocations, new {disabled = "disabled" })
}else
{
@Html.DropDownListFor(x => x.Id, Model.AllLocations)
}
或者,您可以参考以下帖子,根据您的选择有条件地添加它。
条件禁用输入
,如果条件为真,您可以按如下方式执行此操作,使包含禁用属性的对象成为空白对象。我希望它能帮助你
@Html.DropDownList(x => x.Id, Model.AllLocations, Model.LockLocationList == true ? new { @disabled = "disabled" } as object : new {} as object)
只要下拉列表中存在 disabled
属性,无论值如何,都会禁用该属性。因此,当它不应该被禁用时,您根本不需要设置它。
有关代码示例,请参阅 K D 的答案