2012-05-02 11 views
5

Mam następujący kod w moim działaniu:Jak utworzyć własną listę SelectList z wartościami "00" i "" w języku C# dla MVC?

 ViewBag.AccountId = new SelectList(_reference.Get("01") 
      .AsEnumerable() 
      .OrderBy(o => o.Order), "RowKey", "Value", "00"); 

i moim zdaniem:

@Html.DropDownList("AccountID", null, new { id = "AccountID" }) 

Teraz chciałbym stworzyć listę dynamicznie więc w moim działaniu Chciałbym hardcode prosta SelectList z wartościami: 00 i "", więc gdy przejdę do mojego widoku, widzę tylko puste pole wyboru.

Czy ktoś może wyjaśnić, jak mogę to zrobić w języku C#.

Odpowiedz

12

W kontrolerze:

var references = _reference.Get("01").AsEnumerable().OrderBy(o => o.Order); 

List<SelectListItem> items = references.Select(r => 
    new SelectListItem() 
    { 
     Value = r.RowKey, 
     Text = r.Value 
    }).ToList(); 

var emptyItem = new SelectListItem(){ 
    Value = "", 
    Text = "00" 
}; 

// Adds the empty item at the top of the list 
items.Insert(0, emptyItem); 

ViewBag.AccountIdList = new SelectList(items); 

W widoku:

@Html.DropDownList("AccountID", ViewBag.AccountIdList) 

Uwaga, nie ma potrzeby, aby dodać new { id = "AccountId" } od MVC daje kontrolę nad tym identyfikatorem tak.

Edit:

Jeśli potrzebne jest tylko pustą rozwijanej listy czemu tworząc listy select, która nie jest pusta w kontrolerze?

W każdym razie, oto co można zrobić (kod widok pozostaje taka sama):

List<SelectListItem> items = new List<SelectListItem>(); 

var emptyItem = new SelectListItem(){ 
    Value = "", 
    Text = "00" 
}; 

items.Add(emptyItem); 

ViewBag.AccountIdList = new SelectList(items); 
+0

mogę uprościć to jak może nie wyjaśnić tak dobrze. Potrzebuję tylko listy z jednym pustym przedmiotem. Czy mogę połączyć ostatnie trzy zdania w jedno? Dzięki –

Powiązane problemy