Html.DropDownList – 禁用/只读

在使用MVC Html.DropDownList时,我需要设置什么选项来只读下拉框?

我尝试过像….

Html.DropDownList("Types", Model.Types, new { _Enabled = "false" }) 

沿着这条路线有很多不同的东西; 唉,没有快乐!

我认为这将是一个简单的…..它可能是!

尝试这个

 Html.DropDownList("Types", Model.Types, new { @disabled = "disabled" }) 

关于22:

如果我们使用@disabled ,这个字段不会被发送到动作(Mamoud)如果我们使用@readonly ,那么下拉错误仍然可以让你改变这个值

解决方法:使用@disabled ,并添加下拉菜单后隐藏的字段:

 @Html.HiddenFor(model => model.xxxxxxxx) 

然后它真的被禁用,并发送到行动。

 <script type="text/javascript"> $(function () { $(document) .ajaxStart(function () { $("#dropdownID").attr("disabled", "disabled"); }) .ajaxStop(function () { $("#dropdownID").removeAttr("disabled"); }); }); </script> 

或者你可以尝试这样的事情:

 Html.DropDownList("Types", Model.Types, new { @readonly = "true" }) 

我只是这样做,并把它叫做一天

 Model.Id > -1 ? Html.EnumDropDownListFor(m => m.Property, new { disabled = "disabled" }) : Html.EnumDropDownListFor(m => m.Property) 

杰米R的工作最适合我

 <div class="form-group"> @Html.LabelFor(model => model.OBJ_ID, "Objs", htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.DropDownList("OBJ_ID", null, htmlAttributes: new { @class = "form-control", @disabled = "disabled"}) @Html.HiddenFor(m => m.OBJ_ID) @Html.ValidationMessageFor(model => model.OBJ_ID, "", new { @class = "text-danger" }) </div> </div> 

我在提到所有评论和答案之后创build了这个答案。 这将解决下拉的人口错误,即使它被禁用。

步骤01

 Html.DropDownList("Types", Model.Types, new {@readonly="readonly"}) 

把这个风格

  select[readonly] option, select[readonly] optgroup { display: none; } 
 @Html.DropDownList("Types", Model.Types, new { @disabled = "" }) 

作品

Html.DropDownList(“Types”,Model.Types,new {@disabled =“disabled”})@ Html.Hidden(Model.Types)并用于保存和恢复数据,使用隐藏的控件