I am showing an enum as dropdown list in my Edit view
like this:
Inside Model
public enum PaymentType
{
Self=1,
Insurer=2,
PrivateCompany=3
}
public PaymentType PaymentTypeSelected { get; set; }
Inside Controller
ViewBag.EnumList = Patient.PaymentType.Insurer.ToSelectList();
patient.PaymentTypeSelected=Patient.PaymentType.Insurer;
In View
@Html.DropDownListFor(m => m.PaymentTypeSelected,
ViewBag.EnumList as SelectList)
And an Extension Function
public static System.Web.Mvc.SelectList ToSelectList<TEnum>(this TEnum obj)
where TEnum : struct, IComparable, IFormattable, IConvertible
{
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");
}
Generated HTML
<select data-val="true"
data-val-required="The PaymentTypeSelected field is required."
id="ptype" name="PaymentTypeSelected">
<option value="1">Self</option>
<option value="2">Insurer</option>
<option value="3">PrivateCompany</option>
</select>
It all looks okay to me, but the dropdown does not show default selected value (in my case Insurer
). Can any one point out what I am doing wrong here?