数据库中有个数值字段BillType,
意思和程序中枚举对应如下:
这样写是挺方便的,循环展示直接ToString()就得到相应的中文,还能做数值对比,
奈何领导说不能用中文,怕以后会遇到不可思议的麻烦,于是只能改造:
自定义特性标签:
public class RemarkAttribute : Attribute { private string _remark; public RemarkAttribute(string _remark) { this._remark = _remark; } public string Remark { get { return _remark; } set { _remark = value; } } }
扩展Enum,获取特性标签中的中文:
public static class EnumExtension { public static string GetEnumRemark(this System.Enum _enum) { Type type = _enum.GetType(); string name = _enum.ToString(); FieldInfo fd = type.GetField(name); if (fd == null) return string.Empty; var attr = fd.GetCustomAttribute<RemarkAttribute>(); if (attr != null) { name = attr.Remark; } return name; } }
DropDownList中的循环绑定:
枚举的转换:
protected string GetTypeText(object obj) { OrderTypeEnum en; if (!Enum.TryParse(obj.ToString(), out en)) { return ""; } return en.GetEnumRemark(); }