Comment créer une liste déroulante à partir d'un enum dans ASP.NET MVC ?

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