Vedo che non c'è una risposta facile. Ho sviluppato una soluzione semplice ma dà un po 'di lavoro. Questo lavoro per DropDownList e DropDownListFor
prima creare una classe di estensione dove vuoi. (Deve essere statico con metodi statici) e quindi aggiungere il seguente metodo di estensione
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;
}
}
Ora noti la questa estensione solo aggiungere un nuovo attributo, il disableLabel Questo controllerà se si desidera disabilitare o meno etichetta.
Now You Andiamo da parte view's primo dichiarano che si desidera utilizzare la classe estensione aver creato es: @using WF.Infrastructure.Extension;
Ora si usa come se fosse: @Html.DropDownList("Unidade", lstUnidade, "Text of Option Disabled",true)
Nota: se si desidera lavorare con DropDownListFor, basta aggiungere un altro metodo di estensione per la classe di estensione con questa firma:
public static MvcHtmlString DropDownListFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, IEnumerable<SelectListItem> selectList, string optionLabel,bool disableLabel)
PS: Se si dichiara vostri metodi di estensione in un progetto separato come me, sarà necessario aggiungere le assemblee (System.Web.Mvc, di sistema.Web) e nella tua classe di estensione è necessario dichiarare:
using System.Web.Mvc;
using System.Web.Mvc.Html;
Ciao Nathan, ho provato il tuo metodo, ma non ha funzionato – user2093360
Ecco la mia strada e alla fine funziona. @ Html.DropDownList ("country", nuova lista di selezione (ViewBag.countries come System.Collections.IEnumerable, "name", "name"), "-SELECT-", new {@ class = "chzn-select", @placeholder = "- SELECT-", @ style = "width: 160px;"}) – user2093360
Penso che il @@ placeholder sia inutile, sebbene lo stile @@ funzioni in modo provocatorio. Mi chiedo se @placeholder sia una parola chiave corretta. Ho provato a cercare nella documentazione o nelle specifiche di @@ html.DropDownList ma non sono riuscito. Sai dove posso trovarli? – user2093360