获取枚举类集合的方法

在公司的项目开发中常遇到需要取枚举值的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

posted on 2016-03-31 10:48  晴朗_Raymond  阅读(846)  评论(0编辑  收藏  举报