MVC 3中的下拉列表

时间:2012-03-06 18:19:25

标签: c# asp.net-mvc entity-framework

在查看下拉菜单的许多示例之后,这是我的情况。

我有一个数据库表:Companies

在我的注册视图模型中,我有以下内容:public int? CompanyId { get; set; }(考虑将其更改为public IEnumerable<Company> Companies { get; set; }

在我的注册视图中,用户可以选择他所在的公司。我想有一个下拉列表,列出我们数据库中的公司供用户选择。

我设置了公司存储库以获取所有公司并以IEnumerable返回。

我该如何处理?在视图模型或控制器中执行此操作会更好吗?

2 个答案:

答案 0 :(得分:4)

在您的模型中,声明两个属性。

public int? CompanyId { get; set; }
public IEnumerable<SelectListItem> Companies { get; set; }

然后在你看来

@Html.LabelFor(x => x.CompanyId)
@Html.DropDownListFor(x => x.CompanyId, Model.Companies)

这将创建一个选择列表,用于设置您的CompanyId属性并使用公司作为选项值。

您可以轻松创建SelectList。我猜它会像

Companies.AddRange(
  aListOfCompanies.Select(x => 
    new SelectListItem { Text = x.CompanyName, Value = x.CompanyId.ToString() }));

答案 1 :(得分:0)

在ViewModel中创建一个方法,如(GetCompanies()) 然后在你的Controller中创建一个SelectList对象,它返回你的viewModel对象。 然后你可以通过viewBag或模型中的属性将它传递给视图。