2009-02-03 9 views

Odpowiedz

123

Poniższy fragment będzie poprzedzał ciąg.Odpowiedź do SelectList (lub IEnumerable) określonej w elemencie ViewData ["Menu"]. Selektor będzie miał identyfikator i nazwę MenuID.

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

Dokumentacja: DropDownList method

+12

Dzięki. Nazwa parametru optionLabel dla opcji domyślnej wyrzuciła mnie :) –

+4

Geez ... ja też zaczynałem pisać własną metodę pomocnika ... nazwa śmieci IMHO - brzmi, jakby to była wypisywana obok etykietka

+1

Mała literówka: powinien przeczytać HerbalMart

-5

Rozwiązanie zaprezentowane tutaj bardzo dobrze dla mnie: http://forums.asp.net/t/1142484.aspx/1

Podstawowym założeniem jest to, że można ustawić właściwość Twój DropDownList do trueAppendDataBoundItems a następnie umieścić asp:ListItem w the DropDownList i stanie się on domyślnym elementem dla wszystkich elementów databound, które się po nim pojawią.

+4

'-1' To jest dla ASP.NET Web Forms, a nie dla MVC. – JoeBrockhaus

0

To proste rozwiązanie pracował dla mojego projektu mvc5:

zdaniem:

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

wystarczy dodać nowy element do List<> chcesz wyświetlić w 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 metody kontrolera i zrobić trochę kodu. To wszystko.

6

Dla przykładu:

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:

inline image