Created
April 5, 2012 20:55
-
-
Save jchadwick/2314115 to your computer and use it in GitHub Desktop.
ASP.NET MVC Enum Drop-Down List
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System.Web.Mvc; | |
using System.Web.Mvc.Html; | |
public static class HtmlHelperEnumExtensions | |
{ | |
public static IHtmlString EnumDropDownListFor<TModel, TEnum>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TEnum>> field, TEnum selectedValue = default(TEnum)) | |
where TEnum : struct | |
{ | |
var name = (field.Body as MemberExpression).Member.Name; | |
return EnumDropDownList(helper, name, selectedValue); | |
} | |
public static IHtmlString EnumDropDownList<TEnum>(this HtmlHelper helper, string name, TEnum selectedValue = default(TEnum)) | |
where TEnum :struct | |
{ | |
var selectListItems = | |
from Enum enumVal in Enum.GetValues(typeof (TEnum)) | |
let value = enumVal.ToString() | |
where value != "Unknown" | |
let enumName = Enum.GetName(typeof (TEnum), enumVal) | |
let selected = ((object)enumVal) == (object)selectedValue | |
select new SelectListItem { Text = enumName, Value = value }; | |
return helper.DropDownList(name, selectListItems); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment