我正在尝试使用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" })
我将 Rune 的答案转换为扩展方法:
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