Comment créer une liste déroulante à partir d’un enum dans ASP.NET MVC ?
Pour MVC v5.1, utilisez Html.EnumDropDownListFor
@Html.EnumDropDownListFor(
x => x.YourEnumField,
"Select My Type",
new { @class = "form-control" })
Pour MVC v5, utilisez EnumHelper
@Html.DropDownList("MyType",
EnumHelper.GetSelectList(typeof(MyType)) ,
"Select My Type",
new { @class = "form-control" })
Pour MVC 5 et versions antérieures
J’ai transformé la réponse de Rune en méthode d’extension :
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);
}
}
}
Cela vous permet d’écrire :
ViewData["taskStatus"] = task.Status.ToSelectList();
en utilisant using MyApp.Common