禁用下拉列表razor mvc

本文关键字:mvc razor 下拉列表 | 更新日期: 2023-09-27 18:07:37

在我的razor视图中,我使用了一个下拉列表。我想要禁用此控件(不可选择)。

我的代码是:
<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>

不带"disabled"属性。

我真正的目标是有条件地启用/禁用下拉菜单,就像这样:

<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"}

但是没有,disabled属性不显示在HTML页面上。

有人知道吗?

禁用下拉列表razor mvc

只是一个小小的修正。试试这个

<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>

首先,如果您想根据用户输入启用/禁用下拉列表,您需要使用javascript来启用/禁用下拉列表。

$("#checkbox1").change(function () {
  if (document.getElementById("checkbox1").checked == true) {
     document.getElementById("DropDown1").disabled = true;
  }
  else {
     document.getElementById("DropDown1").disabled = false;
  }
});

这是我为你试过的小提琴演示,它是完美的

小提琴演示

  1. 我有两个属性模型
  2. 我正在填充测试数据在下拉控制器演示的目的(在你的情况下,它将来自数据库)
  3. 在视图上,我将id分配给两个输入。
  4. 最后,在下面的视图中有一个Javascript函数,它正在驱动复选框,看看是否被选中,如果被选中,你不能从下拉菜单中选择任何值,否则它将打开选择值。

我解决了我的问题:有一个javascript在我的代码(我很抱歉,我没有立即注意到)删除禁用属性在文档准备。

我所做的是:

  • 为HtmlHelper创建扩展:

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" });
    }
}
  • 在razor视图中:

<code><div class="field-list">@Html.DropDownListFor(model => model.LinguaCodiceMadre, Model.LinguaMadreList, "", Model.IsEnabled)</div></code>

这工作!

谢谢