1

下面是生成下拉列表的代码(在视图中)

@Html.DropDownList("feeTypes", null, new { @disabled = false })

当我将 false 更改为 true 时,上面的行工作正常,但是当我设置为 false 时,它​​也被禁用(即,每当我输入 true 或 false 时,下拉列表总是被禁用)

为什么会出现上述情况?

我真正想做的是制作一个可以可编程启用或禁用的下拉列表,还有其他方法可以实现吗?

4

7 回答 7

5

disabled 属性将禁用(如果存在),无论值如何。因为这个,你最终在剃刀中有一个条件:

@if(disabled){
    Html.DropDownList("feeTypes", null, new { @disabled = false })
}
else{
    Html.DropDownList("feeTypes", null)
}
于 2013-10-22T15:11:16.257 回答
3

编辑:

您可以将 disabled 设置为 null (或者可能是一个空字符串),然后该属性将不会被呈现。

@Html.DropDownList("feeTypes", null, cond ? new { @disabled = "" } : null)

哪里cond是真或假

下面的讨论从一个错误的版本开始。现在已经修复和测试了!

于 2013-10-22T15:12:22.743 回答
2

你需要它是:

@Html.DropDownList("feeTypes", null, new { @disabled = "disabled" })

如果您希望启用下拉菜单,disabled则根本不需要该属性,请输入:

@Html.DropDownList("feeTypes", null)

如果您希望能够在两者之间切换,请考虑使用一些 JavaScript/jQuery

于 2013-10-22T15:09:12.820 回答
2

“disabled = false”有点多余。在生成的标记中,如果一个元素被禁用,那么您根本不想要disabled它的属性。例如:

禁用的元素:

@Html.DropDownList("feeTypes", null, new { @disabled = true })

一个未禁用的元素:

@Html.DropDownList("feeTypes")

没有 HTML 标记来指定“这不是禁用的”。disabled相反,在您指定属性之前,默认情况下不会禁用元素。

于 2013-10-22T15:12:11.347 回答
1

禁用属性它实际上不需要任何参数来激活。仅通过提及禁用(不带任何参数)它禁用 DOM 元素

<input type="text" disabled />

Since non parameter attributes are not validated we usually add a parameter to be xhtml valid

<input type="text" disabled="ItDoesntReallyMatter" />

The thing you have to do is remove the attribute completely from the element using jquery or simple javascript.

document.getElementsByTagName("feeTypes")[0].removeAttribute("disabled ");
于 2013-10-22T15:15:11.780 回答
1

Remove the disabled attribute if you want to re-enable it. There is no such thing as disabled="enabled". Even markup like <input type="text" disabled /> will disable your input in modern browsers.

See the html5 reference for more info.

于 2013-10-22T15:15:20.363 回答
0

After putting readonly on your dropdownlist, put this inside style tag..

<style>
 select[readonly] option, select[readonly] optgroup {
        display: none;
    }
<style>
于 2017-06-15T06:43:35.383 回答