如何从ASP.NETMVC中的枚举创建下拉列表?

如何从ASP.NETMVC中的枚举创建下拉列表?

我试着用Html.DropDownList方法,但无法确定如何与枚举一起使用它。

假设我有这样的枚举:

public enum ItemTypes{
    Movie = 1,
    Game = 2,
    Book = 3}

如何使用Html.DropDownList可拓方法?

还是我最好的选择是简单地创建一个for循环并手动创建HTML元素?


拉莫斯之舞
浏览 905回答 3
3回答

天涯尽头无女友

对于MVC V5.1,使用Html.EnumDropDownListFor@Html.EnumDropDownListFor( &nbsp;&nbsp;&nbsp;&nbsp;x&nbsp;=>&nbsp;x.YourEnumField, &nbsp;&nbsp;&nbsp;&nbsp;"Select&nbsp;My&nbsp;Type",&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;new&nbsp;{&nbsp;@class&nbsp;=&nbsp;"form-control"&nbsp;})对于MVC v5,使用EnumHelper@Html.DropDownList("MyType",&nbsp; &nbsp;&nbsp;&nbsp;EnumHelper.GetSelectList(typeof(MyType))&nbsp;,&nbsp; &nbsp;&nbsp;&nbsp;"Select&nbsp;My&nbsp;Type",&nbsp; &nbsp;&nbsp;&nbsp;new&nbsp;{&nbsp;@class&nbsp;=&nbsp;"form-control"&nbsp;})适用于MVC 5及更低版本我将Rune的答案转换为扩展方法:namespace&nbsp;MyApp.Common{ &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;class&nbsp;MyExtensions{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;SelectList&nbsp;ToSelectList<TEnum>(this&nbsp;TEnum&nbsp;enumObj) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;where&nbsp;TEnum&nbsp;:&nbsp;struct,&nbsp;IComparable,&nbsp;IFormattable,&nbsp;IConvertible &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;values&nbsp;=&nbsp;from&nbsp;TEnum&nbsp;e&nbsp;in&nbsp;Enum.GetValues(typeof(TEnum)) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;select&nbsp;new&nbsp;{&nbsp;Id&nbsp;=&nbsp;e,&nbsp;Name&nbsp;=&nbsp;e.ToString()&nbsp;}; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;new&nbsp;SelectList(values,&nbsp;"Id",&nbsp;"Name",&nbsp;enumObj); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;}}这允许您编写:ViewData["taskStatus"]&nbsp;=&nbsp;task.Status.ToSelectList();通过using MyApp.Common
打开App,查看更多内容
随时随地看视频慕课网APP