在我的剃刀视图中,我使用下拉列表。我希望禁用此控件(不可选)。
我的代码是:
<div class="field-list">@Html.DropDownListFor(model => model.LinguaCodiceMadre, Model.LinguaMadreList, new{ @disabled = "disabled" })</div>
但它不起作用,我的控制总是启用。 Html页面代码是:
<select name="LinguaCodiceMadre" id="LinguaCodiceMadre" data-val-length-max="10" data-val-length="The field LinguaCodiceMadre must be a string with a maximum length of 10." data-val="true">
<option></option>
<option value="sq">Albanian</option>
<option value="de">German</option>
<option value="en">English</option>
<option value="fr">French</option>
<option value="it">Italian</option>
<option value="pt">Portuguese</option>
<option value="ru">Russian</option>
<option value="es">Spanish</option>
</select>
没有&#34;禁用&#34;属性。
我的真正目标是有条件地启用/禁用下拉菜单,如下所示:
<div class="field-list">@Html.DropDownListFor(model => model.LinguaCodiceMadre, Model.LinguaMadreList, new{@disabled=Model.IsDisabled ? "disabled" : "false"})</div>
但它不起作用。
我尝试了
new{@disabled=Model.IsDisabled ? "disabled" : "false"}
和
new{disabled=Model.IsDisabled ? "disabled" : "false"}
但没有,禁用属性不会在html页面上呈现。
有人有想法吗?
答案 0 :(得分:11)
只是一个小小的修正。试试这个
<div class="field-list">@Html.DropDownListFor(model => model.LinguaCodiceMadre, Model.LinguaMadreList, new{ disabled = "disabled" })</div>
这肯定会禁用你的下拉..
以及其他替代方法是使用jquery:
稍后为您的控件声明 @Id 执行类似
的操作$("#youid").prop("disabled", true);
最后试试这个:如果这不起作用意味着你身边的问题
<div class="field-list">@Html.DropDownListFor(model => model.LinguaCodiceMadre, Model.LinguaMadreList,String.Empty, new{ disabled = "disabled" })</div>
此致
答案 1 :(得分:4)
首先,如果你想根据用户输入启用/禁用DropDown List,你需要使用javascript来启用/禁用下拉列表。
对于Javascript使用以下逻辑:
$("#checkbox1").change(function () {
if (document.getElementById("checkbox1").checked == true) {
document.getElementById("DropDown1").disabled = true;
}
else {
document.getElementById("DropDown1").disabled = false;
}
});
这是我为你试过的小提琴演示,它完全可以实现
答案 2 :(得分:1)
我解决了我的问题:我的代码中有一个javascript(我很抱歉,我没有立即注意到)在文档就绪时删除了禁用属性。
我做的是:
public static class HtmlExtensions
{
public static MvcHtmlString DropDownListFor<TModel, TProperty>(this HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression, IEnumerable<SelectListItem> selectList, string optionText, bool canEdit)
{
if (canEdit) return html.DropDownListFor(expression, selectList, optionText);
return html.DropDownListFor(expression, selectList, optionText, new { @disabled = "disabled" });
}
}
<code><div class="field-list">@Html.DropDownListFor(model => model.LinguaCodiceMadre, Model.LinguaMadreList, "", Model.IsEnabled)</div></code>
这有效!
由于