2014-02-07 43 views
3

我在我的数据层中有一个枚举,我想在我的网站项目中使用它的下拉列表。 我在数据层枚举是:使用枚举填充ASP.NET MVC中的SelectList

namespace SME.DAL.Entities.Enums 
{ 
    public enum EntityState 
    { 
     Open, 
     Freezed, 
     Canceled, 
     Completed, 
     Terminated, 
     ReadOnly 
    } 
} 

我怎样才能让其选择列表,并在我的网站的页面中使用它?我使用的是ASP.NET MVC 4.

+0

我看到它的方式,你有3个选项:在创建'SelectList'你的动作,并将其传递给视图**或**创建一个自定义的Html帮助器来做到这一点**或**为'Enum'创建一个模板您可以在其中动态创建下拉菜单。以下答案中的链接提供了完成每个选项所需的所有信息。 –

回答

14

简单的例子:

控制器:

public ViewResult SomeFilterAction() 
{  
var EntityState = new SelectList(Enum.GetValues(typeof(EntityState)).Cast<EntityState>().Select(v => new SelectListItem 
     { 
      Text = v.ToString(), 
      Value = ((int)v).ToString() 
     }).ToList(),"Value","Text"); 
return View(EntityState) 
} 

查看:

@model System.Web.Mvc.SelectList 
    @Html.DropDownList("selectedEntityState",Model) 
+0

如果您在Html帮助程序或模板中移动此逻辑,则每次需要“枚举下拉列表”时,都不必显式调用该操作。 –

2

那么,如果你使用的是MVC 5.1,他们最近添加了一个帮助器来从Enums创建下拉菜单。但是,由于您使用的是MVC 4,您将不得不一起破解一些东西。

这里有一些例子,如果你已经搜索过,这个网站已经有很多次的回答了。

How do you create a dropdownlist from an enum in ASP.NET MVC?