在复选框选择上启用/禁用'DropDownListFor'

时间:2012-06-15 00:50:48

标签: asp.net-mvc asp.net-mvc-3 drop-down-menu html.dropdownlistfor

我正在工作时显示选中复选框的下拉值。但是使用下面的代码,下拉列表中存在的所有不同项目都将直接显示。

不知怎的,@ Html.DropDownListFor在select标签内部无法正常工作,有人可以帮我解决一下吗?

注意:复选框切换功能完美。

谢谢,

.cshtml

<input type="checkbox" /> 
<p>check this box to escalate</p>          
<select disabled="disabled">    
@Html.DropDownListFor(
    model => model.EscalationQueue,
        new SelectList(Extensions.EscalationQueue, Model.EscalationQueue),
          new { @class = "escalation-queue", name = Model.EscalationQueue }
)  
</select>

.js文件

var dropdownToggle = function () {
    $("input:checkbox").change(function () {
        if ($("input:checkbox").is(":checked")) {
            $("select").removeAttr("disabled");
        }
        else {
            $("select").attr("disabled", "disabled");
        }
    });
}

$(document).ready(function () {
    dropdownToggle();
});

输出:

CurrentOutput1

CurrentOutput2

1 个答案:

答案 0 :(得分:4)

您不需要<select>标记,HtmlHelper DropDownListFor会为您呈现该标记。 如果要将下拉列表初始化为已禁用,请像设置cssclass一样设置html属性...

<input type="checkbox" /> 
<p>check this box to escalate</p>  
@Html.DropDownListFor(
        model => model.EscalationQueue,
        new SelectList(Extensions.EscalationQueue, Model.EscalationQueue),
        new { @class = "escalation-queue", 
                name = Model.EscalationQueue, 
                disabled= "disabled" 
         }
)