Content

ASP.NET MVC把数据库中枚举项的数字转换成文字(枚举类转json)太疯狂了

文章摘要

这篇文章介绍了一个名为`EnumExt`的C#类,该类包含两个静态方法: 1. `GetEnumDescription(object e)`:该方法用于获取枚举项的注释信息。它通过遍历枚举项的字段,并检查是否存在自定义属性`EnumDisplayNameAttribute`,如果找到该属性,则返回其值;否则返回枚举项的名称。 2. `GetSelectList(Type enumType)`:该方法用于生成一个选择列表,其中包含枚举项的选择项。每个选择项的文本由`GetEnumDescription`方法获取,值为枚举项的整数表示。 文章整体上通过代码展示了如何自定义枚举项的注释和选择列表的生成方式。

 public class EnumExt { /// <summary> /// 获取枚举项的注释 /// </summary> /// <param name=”e”>枚举项</param> /// <returns></returns> public static string GetEnumDescription(object e) { //获取枚举项 Type t=e.GetType(); //获取枚举项的字段 FieldInfo[] fis=t.GetFields(); foreach (FieldInfo fi in fis) { //如果当前字段名称不是当前枚举项 if (fi.Name !=e.ToString()) { continue;//结束本次循环 } //如果当前字段的包含自定义特性 if (fi.IsDefined(typeof (EnumDisplayNameAttribute), true)) { //获取自定义特性的属性值 return (fi.GetCustomAttributes(typeof(EnumDisplayNameAttribute), true)[0] as EnumDisplayNameAttribute).DisplayName; } } return e.ToString(); } public static List<SelectListItem> GetSelectList(Type enumType) { List<SelectListItem> selectList=new List<SelectListItem>(); //selectList.Add(new SelectListItem{Text=”–请选择–“,Value=””}); foreach (object e in Enum.GetValues(enumType)) { selectList.Add(new SelectListItem { Text=GetEnumDescription(e), Value=((int)e).ToString() }); } return selectList; } }