我的视图内有一个下拉控件。现在我希望它具有枚举的描述作为文本。我最不担心ID,但我需要文本格式正确。
最佳答案
使用此代码并绑定您的下拉菜单-
public static List<SelectListItem> GetSelectList(Type enumType, String SelectedValue, Boolean IsValString = true)
{
Array values = Enum.GetValues(enumType);
List<SelectListItem> selectListItems = new List<SelectListItem>(values.Length);
foreach (var i in Enum.GetValues(enumType))
{
String name = Enum.GetName(enumType, i);
String desc = name;
FieldInfo fi = enumType.GetField(name);
var attributes = fi.GetCustomAttributes(typeof(DescriptionAttribute), false);
String result = attributes.Length == 0 ? desc : ((DescriptionAttribute)attributes[0]).Description;
var selectItem = new SelectListItem()
{
Text = result,
Value = (IsValString) ? i.ToString() : ((Int32)i).ToString()
};
if ((SelectedValue != null) && (SelectedValue.Equals(selectItem.Value)))
{
selectItem.Selected = true;
}
selectListItems.Add(selectItem);
}
return selectListItems;
}