使用枚举在ASP.NET MVC中填充SelectList

Populate SelectList in ASP.NET MVC with enum

本问题已经有最佳答案,请猛点这里访问。

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

1
2
3
4
5
6
7
8
9
10
11
12
namespace SME.DAL.Entities.Enums
{
    public enum EntityState
    {
        Open,
        Freezed,
        Canceled,
        Completed,
        Terminated,
        ReadOnly
    }
}

如何制作它的选择列表并在我的网站页面中使用它?我正在使用ASP.NET MVC 4。


简单例子:

控制器:

1
2
3
4
5
6
7
8
9
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)
}

观点:

1
2
  @model System.Web.Mvc.SelectList
  @Html.DropDownList("selectedEntityState",Model)


好吧,如果您使用的是MVC5.1,那么他们最近添加了一个助手来从枚举创建下拉列表。但是,由于您使用的是MVC4,因此必须将一些东西拼凑在一起。

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

如何从ASP.NET MVC中的枚举创建DropDownList?