我正在尝试使用Html.DropDownList扩展方法,但无法弄清楚如何通过枚举使用它。
Html.DropDownList
假设我有一个这样的枚举:
public enum ItemTypes { Movie = 1, Game = 2, Book = 3 }
如何使用Html.DropDownList扩展方法使用这些值创建下拉列表?
还是我最好的选择就是简单地创建一个for循环并手动创建HTML元素?
@Html.EnumDropDownListFor( x => x.YourEnumField, "Select My Type", new { @class = "form-control" })
@Html.DropDownList("MyType", EnumHelper.GetSelectList(typeof(MyType)) , "Select My Type", new { @class = "form-control" })
我将符文的答案扩展为扩展方法:
namespace MyApp.Common { public static class MyExtensions{ public static SelectList ToSelectList<TEnum>(this TEnum enumObj) where TEnum : struct, IComparable, IFormattable, IConvertible { var values = from TEnum e in Enum.GetValues(typeof(TEnum)) select new { Id = e, Name = e.ToString() }; return new SelectList(values, "Id", "Name", enumObj); } } }
这使您可以编写:
ViewData["taskStatus"] = task.Status.ToSelectList();
通过 using MyApp.Common
using MyApp.Common