Get Enum value to show on Dropdownlist Asp.Net MVC

前端 未结 3 1158
傲寒
傲寒 2020-12-20 10:03

I have an enum like this:

public enum PaymentType
{
    Self=1,
    Insurer=2,
    PrivateCompany=3
}

And I am showing it as select box opt

3条回答
  •  执念已碎
    2020-12-20 10:47

    You can write an extension method like this:

     public static System.Web.Mvc.SelectList ToSelectList(this TEnum obj)
                where TEnum : struct, IComparable, IFormattable, IConvertible // correct one
     {
    
       return new SelectList(Enum.GetValues(typeof(TEnum)).OfType()
                  .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:

    
    

    Here is a working Demo Fiddle of Enum binding with DropDownListFor

提交回复
热议问题