我正在尝试根据模型中的值启用或禁用控件。我希望当我想要禁用控件时我可以使用disabled="disabled"
,或者当我希望它可以工作时,我希望disabled = ""
。
@Html.DropDownListFor(x => x.AccountTypeId, Model.AccountTypes, "Select One", new { @class = "form-control", @disabled = Model.ClosedDate.HasValue ? "disabled" : "" })
但是这不起作用,并且无论值如何,控件始终被禁用。有没有办法可以做到这一点,而不使用JavaScript或什么?
答案 0 :(得分:2)
不幸的是,disabled
属性在HTML中的工作方式如果存在于元素上,无论其值如何,它都会将该元素标记为已禁用。
因此,您可以将代码修改为以下内容:
@Html.DropDownListFor(x => x.AccountTypeId, Model.AccountTypes, "Select One", (Model.ClosedDate.HasValue ? new { @class = "form-control", @disabled = "disabled" } : new { @class = "form-control" })
不是最漂亮但应该完成工作
答案 1 :(得分:1)
还有一点需要记住的事实是,将输入设置为禁用会阻止表单提交输入值,并且当mvc绑定模型时可能会遇到麻烦,因为它们会插入默认值财产禁用。如果要将值发布回控制器,请使用readonly属性而不是disabled。