我正在尝试为我的MVC应用程序构建一个简单的下拉列表。我有一个方法可以获取一个List,它具有帐户名,ID,已删除等属性...并且拥有不同的银行帐户。
在我的控制器中,我正在调用它,然后使用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 :(得分:1)
SelectList是包含SelectListItems的包装器。您可以通过传入IEnumerable和可选的项目来创建SelectList。
修改强> 对不起,我不是很清楚。我的意思是你应该在construstor中使用带有IEnumerable的SelectList而不是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();
}