我可以看到没有一个简单的答案。我开发了一个简单的解决方案,但它提供了一些工作。这适用于DropDownList和DropDownListFor
首先在任何你想要的地方创建一个扩展类。(必须是Static with static methods)然后添加如下扩展方法
public static MvcHtmlString DropDownList(this HtmlHelper htmlHelper,string name, IEnumerable<SelectListItem> selectList, string optionLabel, bool disableLabel)
{
MvcHtmlString mvc = htmlHelper.DropDownList(name, selectList, optionLabel);
if (disableLabel)
{
string disabledOption = mvc.ToHtmlString();
int index = disabledOption.IndexOf(optionLabel);
disabledOption = disabledOption.Insert(index - 1, " disabled");
return new MvcHtmlString(disabledOption);
}
else
{
return mvc;
}
}
现在注意这个扩展只添加了一个新属性,disableLabel
这将检查你是否要禁用标签。
现在你让我们去查看端首先声明你想使用你创建的扩展类:@using WF.Infrastructure.Extension;
现在你像这样使用:@Html.DropDownList("Unidade", lstUnidade, "Text of Option Disabled",true)
注意:如果您希望它与 DropDownListFor 一起使用,只需使用此签名为您的扩展类添加另一个扩展方法:
public static MvcHtmlString DropDownListFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, IEnumerable<SelectListItem> selectList, string optionLabel,bool disableLabel)
PS:如果您在像我这样的单独项目中声明扩展方法,则需要添加程序集(System.Web.Mvc,System.Web),并且在扩展类中您需要声明:
using System.Web.Mvc;
using System.Web.Mvc.Html;