2011-01-28 4 views
0

Я пытаюсь создать простой выпадающий список для моего приложения MVC. У меня есть метод, который получает мне List, который имеет свойства с именем учетной записи, id, удаленным и т. Д. И т. Д. ... и имеет разные банковские счета.Building DropDownList и Asp.Net MVC

В мой контроллер, я называю это, то с помощью Linq, пытаясь построить SelectItemList ... как это:

 public ActionResult AccountTransaction(AccountTransactionView model) 
    { 
     List<AccountDto> accounts = Services.AccountServices.GetAccounts(false); 

     AccountTransactionView v = new AccountTransactionView(); 
     v.Accounts = (from a in accounts 
         select new SelectListItem 
           { 
            Text = a.Description, 
            Value = a.AccountId.ToString(), 
            Selected = false 
           }); 



     return View(); 
    } 

Однако это не удается, говоря, что я не могу конвертировать IEnumerable SelectListItem в SelectList.

Мой AccountTransactionView определяется следующим образом:

public class AccountTransactionView 
{ 
    public SelectList Accounts { get; set; } 
    public int SelectedAccountId { get; set; } 

} 
+0

возможно дубликат [Asp.Net MVC с падения список вниз, и помощи SelectListItem] (HTTP://stackoverflow.com/questions/4833652/asp-net-mvc-with-drop-down-list-and-selectlistitem-assistance) –

ответ

1

SelectList является оболочкой, которая содержит SelectListItems. Вы можете создать SelectList, передав в IEnumerable и, возможно, выбранный элемент.

Редактировать: Извините, я не был «действительно прозрачным. То, что я имею в виду, что вы должны использовать SelectList с IEnumerable в construstor вместо того, IEnumerable сам по себе:

List<AccountDto> accounts = Services.AccountServices.GetAccounts(false); 

    AccountTransactionView v = new AccountTransactionView(); 
    v.Accounts = new SelectList(
         (from a in accounts 
         select new SelectListItem 
            { 
             Text = a.Description, 
             Value = a.AccountId.ToString(), 
             Selected = false 
            } 
         ) 
         ); 

    return View(); 
} 
+0

Я думал, что делаю это. Что я делаю неправильно в приведенном выше коде? – Craig

+0

Я изменил свой класс данных, чтобы использовать общедоступные учетные записи IEnumerable {get; задавать; }, и это позволяет компилировать код, но так ли? – Craig

+0

Держите SelectList в своем классе данных и см. Мой отредактированный ответ для остальных. –