You can write an extension method like this:
public static System.Web.Mvc.SelectList ToSelectList<TEnum>(this TEnum obj)
where TEnum : struct, IComparable, IFormattable, IConvertible // correct one
{
return new SelectList(Enum.GetValues(typeof(TEnum)).OfType<Enum>()
.Select(x =>
new SelectListItem
{
Text = Enum.GetName(typeof(TEnum), x),
Value = (Convert.ToInt32(x)).ToString()
}), "Value", "Text");
}
and in action use it like this:
public ActionResult Test()
{
ViewBag.EnumList = PaymentType.Self.ToSelectList();
return View();
}
and in View :
@Html.DropDownListFor(m=>m.SomeProperty,ViewBag.EnumList as SelectList)
Rendered HTML:
<select id="EnumDropDown" name="EnumDropDown">
<option value="1">Self</option>
<option value="2">Insurer</option>
<option value="3">PrivateCompany</option>
</select>
Here is a working Demo Fiddle of Enum binding with DropDownListFor
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…