ASP.NET MVC-Dropdown-Liste mit einer leeren Standardoption

80

Gibt es eine Möglichkeit, eine leere Standardoption (oder Text) einzuschließen, wenn für eine Dropdown-Liste kein Wert ausgewählt ist?

James Newton-King
quelle

Antworten:

129

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

Tvanfosson
quelle
13
Vielen Dank. Der Parametername von optionLabel für die Standardoption hat mich umgehauen :)
James Newton-King
4
Meine Güte ... ich auch, ich fing an, meine eigene Hilfsmethode zu schreiben ... Müllname IMHO - klingt so, als würde ein <label> -Tag daneben ausgegeben.
Herr Grok
Beachten Sie, dass sich der ViewData-Schlüssel von der DropDown-ID unterscheiden muss (in diesem Beispiel "Menu"! = "MenuID"). Andernfalls überschreibt das Framework die Dropdown-Liste und ignoriert den dritten Parameter.
Manuel Allenspach
Genial! Mein Problem mit select2.js wurde ebenfalls behoben.
Gkonuralp
7

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:

Inline-Bild

tiepnv
quelle
0

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.

PixelPlex
quelle
-8

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 AppendDataBoundItemsEigenschaft Ihres DropDownListauf setzen trueund dann ein asp:ListItemin das DropDownListund setzen, das Ihr Standardelement wird, wobei alle datengebundenen Elemente danach kommen.

cjbarth
quelle
4
-1Dies gilt für ASP.NET Web Forms, nicht für MVC.
JoeBrockhaus