MVC禁用SelectListItem属性不起作用

时间:2014-10-08 21:52:40

标签: asp.net-mvc asp.net-mvc-5

构建SelectList

   public SelectList DummyList()
    {
        List<SelectListItem> list = new List<SelectListItem>();
        list.Add(new SelectListItem { Value = "0", Text = "---Select--", Disabled = false });
        list.Add(new SelectListItem { Value = "Uno", Text = "Uno", Disabled = false });
        list.Add(new SelectListItem { Value = "Dos", Text = "Dos", Disabled = true});
        list.Add(new SelectListItem { Value = "Tres", Text = "Tres", Disabled = false });
        list.Add(new SelectListItem { Value = "Cuatro", Text = "Cuatro", Disabled = false });

        return new  SelectList(list, "Value", "Text", "---Select--");

    }



将选择列表绑定到模型

model.ProductsModel.Model = new DummyDropDown().DummyList();



显示视图

@Html.DropDownListFor(model => model.Model, Model.Model, htmlAttributes: new { @class = "dropdown ", @style = "width:50%;" })



Html结果

<select id="Model" class="dropdown " style="width:50%;" name="Model">
   <option value="0">---Select--</option>
   <option value="Uno">Uno</option>
   <option value="Dos">Dos</option>
   <option value="Tres">Tres</option>
   <option value="Cuatro">Cuatro</option>
</select>



查看

enter image description here


选择列表显示实际上启用的所有项目选项&#34; Dos&#34;应该被禁用

<option value="Dos" disabled>Dos</option>

根据属性。

如果有人可以向我解释原因,或者告诉我代码有什么问题。有没有其他方法来实现这一目标?我需要项目&#34; Dos&#34;被禁用(变灰)。

提前致谢。

1 个答案:

答案 0 :(得分:10)

尝试将方法更改为

public IEnumerable<SelectListItem> DummyList()
{
  List<SelectListItem> list = new List<SelectListItem>();
  ....
  list.Add(new SelectListItem { Value = "Dos", Text = "Dos", Disabled = true});
  ....
  return list;
}

并使ProductsModel.Model类型IEnumerable<SelectListItem>而不是SelectList

目前,您仅使用属性SelectListValue根据您的列表创建 Text(不考虑Disabled属性)。或者,您可以使用接受禁用值参数IEnumerable的{​​{3}}之一