discesa ASP.NET MVC con un'opzione vuoto predefinita
-
21-08-2019 - |
Domanda
C'è un modo per includere un'opzione vuota di default (o con testo) se non v'è alcun valore selezionato per una DropDownList?
Soluzione
Il seguito sarà anteporre string.Empty al SelectList (o IEnumerable) specificato nel [ "Menu"] oggetto Viewdata. La select avranno id e il nome MenuID
.
<%= Html.DropDownList( "MenuID",
(IEnumerable<SelectListItem>)ViewData["Menu"],
string.Empty ) %>
Documentazione: DropDownList metodo
Altri suggerimenti
Ad esempio:
Controller :
private void InitScreenInfoCollate()
{
IEnumerable<MstBrd> listbrd = ibrandRepository.GetItemsByUsercode("");
ViewBag.Brands = new SelectList(listbrd, "brd_cod", "brd_mei", null);
}
View :
@Html.DropDownList("Brands", null, string.Empty, new { @class = "form-control"})
Risultato:
Questa soluzione facile lavorato per il mio progetto mvc5:
in vista:
@{
Model.ModelItemsList.Add(new ModelItem{ });
SelectList modelItemSelectList = new SelectList(Model.ModelItemsList, "ModelItemID", "ModelItemName");
}
Basta aggiungere un nuovo elemento alla List<>
che si desidera visualizzare nella vista.
Nel mio caso, ho aggiunto un "ModelItem" vuoto al mio List<ModelItem> ModelItemList
. Dal momento che la mia ModelItemID è un GUID, ho dovuto controllare per Guid.Empty nel mio metodo di controllo e fare un po 'di codice.
Questo è tutto.
La soluzione presentata qui ha lavorato molto bene per me: http: //forums.asp. net / t / 1142484.aspx / 1
L'idea di base è che si imposta la AppendDataBoundItems
proprietà della vostra DropDownList
per true
e poi mettere un asp:ListItem
nel <=> e che diventerà il vostro articolo di default con tutti gli elementi databound viene dopo esso.