Я вижу, что нет простого ответа. Я разработал простое решение, но это дает некоторую работу. Это будет работать для DropDownList и DropDownListFor
Первых создать расширение класс, где когда-либо вы хотите. (Должен быть Статическая со статическими методами) А затем добавьте следующий метод расширения
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 Это будет проверять, если вы хотите отключить или нет метка.
Теперь вы давайте идти в сторону view's первый заявить, что вы хотите использовать класс расширения вы создали Ex: @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, система.Web) и в своем классе Extension вам нужно будет объявить:
using System.Web.Mvc;
using System.Web.Mvc.Html;
Привет Натан, я попробовал ваш но это не сработало. – user2093360
Вот мой путь, и он, наконец, работает. @ Html.DropDownList («страна», новый SelectList (ViewBag.countries as System.Collections.IEnumerable, «имя», «имя»), «-SELECT-», новый {@ class = «chzn-select», @placeholder = "- SELECT-", @ style = "width: 160px;"}) – user2093360
Я думаю, что @@ placeholder бесполезен, хотя стиль @@ вызывающе работает. Мне интересно, правильное ли ключевое слово @placeholder. Я попытался найти документацию или спецификацию @@ html.DropDownList, но не удалось. Вы знаете, где я могу их найти? – user2093360