获取枚举类集合的方法
在公司的项目开发中常遇到需要取枚举值的key value descpt 的情况,所以写了这个方法,通过异步直接获取了某个枚举的集合包返回到客户端给前段使用。
需要遍历的枚举
public enum AdvertiserOrgEnum : byte { /// <summary> /// 平台 /// </summary> [Description("平台")] Platform = 0, /// <summary> /// 加盟商 /// </summary> [Description("加盟商")] Merchant = 1, /// <summary> /// 便利店 /// </summary> [Description("便利店")] Store = 2, /// <summary> /// 权限平台使用 /// </summary> [Description("仅限平台使用")] OnlyPlatform = 4, /// <summary> /// 无 /// </summary> [Description("无")] Nothing = 5 }
遍历的方法
public string GetDictionaryAdvertiserOrgEnum() { //泛型储键值 Dictionary<string, string> dit = new Dictionary<string, string>(); //对应的值 和描述 string tmpValue = string.Empty; string Descpt = string.Empty; //AdvertiserOrgEnum 是需要获取集合的枚举 foreach (var value in Enum.GetValues(typeof (AdvertiserOrgEnum))) { object[] objAttrs = value.GetType().GetField(value.ToString()).GetCustomAttributes(typeof (DescriptionAttribute), true); if (objAttrs != null && objAttrs.Length > 0) { DescriptionAttribute descAttr = objAttrs[0] as DescriptionAttribute; //枚举描述 Descpt = descAttr.Description; } //枚举值 tmpValue = Convert.ToInt32(value).ToString(); //value.toString(); 枚举名 dit.Add(tmpValue, Descpt); } //将对象转换成json字符串 return (new JavaScriptSerializer()).Serialize(dit); }
当然返回的是json的字符串,所以,前端可按需求自行转换
GetDictionaryAdvertiserOrgEnum: function () { var jsonlist; $.ajax({ type: "POST", url: "/Api/xxx/GetDictionaryAdvertiserOrgEnum", dataType: "json", success: function (data, textStatus) { //post成功 if (data) { var jsonObject = eval('(' + data + ')'); $.each(jsonObject, function (k, v) { jsonlist = { "key": k, "value": v }; AdvertiserOrgEnum.push(jsonlist); }); } }, }); },
参考的blogs:http://blog.csdn.net/razorluo/article/details/42707331