Gibt es eine Möglichkeit, eine leere Standardoption (oder Text) einzuschließen, wenn für eine Dropdown-Liste kein Wert ausgewählt ist?
Gibt es eine Möglichkeit, eine leere Standardoption (oder Text) einzuschließen, wenn für eine Dropdown-Liste kein Wert ausgewählt ist?
Antworten:
Im Folgenden wird string.Empty an die SelectList (oder IEnumerable) angehängt, die im ViewData-Element ["Menu"] angegeben ist. Die Auswahl hat ID und Name MenuID
.
<%= Html.DropDownList( "MenuID",
(IEnumerable<SelectListItem>)ViewData["Menu"],
string.Empty ) %>
Dokumentation: DropDownList-Methode
Zum Beispiel:
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"})
Ergebnis:
Diese einfache Lösung funktionierte für mein mvc5-Projekt:
im Hinblick auf:
@{
Model.ModelItemsList.Add(new ModelItem{ });
SelectList modelItemSelectList = new SelectList(Model.ModelItemsList, "ModelItemID", "ModelItemName");
}
Fügen List<>
Sie einfach ein neues Element zu dem hinzu, das Sie in Ihrer Ansicht anzeigen möchten. In meinem Fall habe ich ein leeres "ModelItem" zu meinem hinzugefügt List<ModelItem> ModelItemList
. Da meine ModelItemID eine Guid ist, musste ich in meiner Controller-Methode nach Guid.Empty suchen und Code ausführen. Das ist alles.
Die hier vorgestellte Lösung hat für mich sehr gut funktioniert: http://forums.asp.net/t/1142484.aspx/1
Die Grundidee ist, dass Sie die AppendDataBoundItems
Eigenschaft Ihres DropDownList
auf setzen true
und dann ein asp:ListItem
in das DropDownList
und setzen, das Ihr Standardelement wird, wobei alle datengebundenen Elemente danach kommen.
-1
Dies gilt für ASP.NET Web Forms, nicht für MVC.