C# Razor DropDownList未禁用

C# Razor DropDownList未禁用,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,我有一个SelectList,可以填充/工作正常 我有一个新的要求,禁用某些用户的列表。因此,我在ViewModel,LockSelectList中添加了一个新属性。此属性在控制器中设置(并起作用) 但是,在呈现列表时,它始终处于禁用状态 我试过了 @Html.DropDownListFor(x => x.Id, Model.AllLocations, new {disabled = Model.LockLocationList? "true" : "false" }) @Html.D

我有一个
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,但似乎存在disabled属性,不管该值如何,都会禁用列表。那么,我该如何调整代码以使其正常工作呢?(最好不使用jQuery来处理事件后的启用/禁用)

我建议按照以下方式执行

@if(Model.LockLocationList)
{
      @Html.DropDownListFor(x => x.Id,  Model.AllLocations, new {disabled = "disabled" })
}else
{
      @Html.DropDownListFor(x => x.Id,  Model.AllLocations)
}
或者你可以参考下面的帖子,根据你的选择有条件地添加它


我建议按照以下方法进行操作

@if(Model.LockLocationList)
{
      @Html.DropDownListFor(x => x.Id,  Model.AllLocations, new {disabled = "disabled" })
}else
{
      @Html.DropDownListFor(x => x.Id,  Model.AllLocations)
}
或者你可以参考下面的帖子,根据你的选择有条件地添加它


或者,如果条件为真,您可以按如下操作,将包含disable attribute else的对象设为空对象。我希望这对你有帮助

@Html.DropDownList(x => x.Id,  Model.AllLocations, Model.LockLocationList == true ? new { @disabled = "disabled" } as object : new {} as object)

或者,如果条件为true,则可以按如下方式执行此操作,使包含disable attribute else的对象成为空对象。我希望这对你有帮助

@Html.DropDownList(x => x.Id,  Model.AllLocations, Model.LockLocationList == true ? new { @disabled = "disabled" } as object : new {} as object)

每当下拉列表中出现
disabled
属性时,无论其值如何,该属性都将被禁用。所以当它不应该被禁用时,你根本不需要设置它


有关代码示例,请参见KD的答案

每当下拉列表中出现
disabled
属性时,无论其值如何,该属性都将被禁用。所以当它不应该被禁用时,你根本不需要设置它


请参阅KD的答案以获取代码示例

啊,现在是一次性的,所以我将使用or语句来完成,谢谢。啊,现在是一次性的,所以我将使用or语句来完成,谢谢。禁用的
有什么意义?您无法选择任何内容,并且它不会返回值。如果
LockLocationList
true
,为什么不只是一个隐藏的输入(因此它的值被发布)并呈现值的文本,因为这样表单在用户之间就会不一致(这不是我的决定!)你说的不一致是什么意思?(您可以将呈现的文本值设置为表单控件的样式)下拉列表看起来与文本框不同(如我所说,考虑到网站的受众,我认为整个UI有点过分,但这不是我的职责!)禁用的
有什么意义?您不能选择任何内容,它也不会回发值。如果
LockLocationList
true
,为什么不只是一个隐藏的输入(因此它的值被发布)并呈现值的文本,因为这样表单在用户之间就会不一致(这不是我的决定!)你说的不一致是什么意思?(您可以将呈现的文本值设置为表单控件的样式)下拉列表看起来与文本框不同(如我所说,考虑到网站的受众,我认为整个UI有点过分,但这不是我的职责!)