Lista rozwijana ASP.NET MVC z domyślną pustą opcją

81

Czy istnieje sposób na dołączenie domyślnej pustej opcji (lub z tekstem), jeśli nie ma wybranej wartości na liście rozwijanej?

James Newton-King
źródło

Odpowiedzi:

130

Poniższe wstawi ciąg.Empty do SelectList (lub IEnumerable) określonej w elemencie ViewData ["Menu"]. Wybrany będzie miał identyfikator i nazwę MenuID.

<%= Html.DropDownList( "MenuID",
                      (IEnumerable<SelectListItem>)ViewData["Menu"],
                      string.Empty ) %>

Dokumentacja: metoda DropDownList

tvanfosson
źródło
13
Dzięki. Nazwa parametru optionLabel dla opcji domyślnej wyrzuciła mnie :)
James Newton-King
4
Rany ... ja też zacząłem pisać własną metodę pomocniczą ... nazwa śmieci IMHO - brzmi tak, jakby wyświetlała obok niej tag <label>.
Mr Grok
Należy pamiętać, że klucz ViewData musi być inny niż identyfikator DropDown-Id (w tym przykładzie „Menu”! = „MenuID”). W przeciwnym razie struktura nadpisuje listę rozwijaną, ignorując trzeci parametr.
Manuel Allenspach
Niesamowite! Naprawiłem też mój problem z select2.js.
gkonuralp
7

Na przykład:

    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"})

Wynik:

obraz w tekście

tiepnv
źródło
0

To proste rozwiązanie zadziałało w moim projekcie mvc5:

z uwagi:

@{
     Model.ModelItemsList.Add(new ModelItem{ });
     SelectList modelItemSelectList = new SelectList(Model.ModelItemsList, "ModelItemID", "ModelItemName");
}

Po prostu dodaj nowy element do tego, List<>który chcesz wyświetlić w swoim widoku. W moim przypadku dodałem pusty „ModelItem” do mojego List<ModelItem> ModelItemList. Ponieważ mój ModelItemID jest Guid, musiałem sprawdzić Guid.Empty w mojej metodzie kontrolera i zrobić kod. To wszystko.

PixelPlex
źródło
-8

Przedstawione tutaj rozwiązanie działało u mnie bardzo dobrze: http://forums.asp.net/t/1142484.aspx/1

Podstawowa idea polega na tym, że ustawiasz AppendDataBoundItemswłaściwość swojego elementu DropDownListto, truea następnie umieszczasz asp:ListItemw DropDownListnim znak, który stanie się elementem domyślnym, a po nim pojawią się wszystkie elementy związane z danymi.

cjbarth
źródło
4
-1Dotyczy to formularzy sieci Web ASP.NET, a nie MVC.
JoeBrockhaus