zoukankan      html  css  js  c++  java
  • 如何显示含有特殊字符的枚举值

    要求UI层的下拉框显示为:

    其他(请在说明中填写),
    信息费,
    信息费(国研网数据库),
    信息服务费,
    咨询费

    -----------

    首先括号是不能被定义为枚举值的,所以要将括号部分单独定义在描述里面,那么枚举值去掉括号,大家会发现有两个信息费,枚举值是不允许有相同的出现,所以简单操作替换一下即可:

    model层定义枚举:

    //定义枚举描述
    //发票项目
        public enum InvoiceType 
        {
            //特殊字符无法写入name中,故采用此方式填写,例如,下列要显示的大括号就属于特殊字符
            [Description("(请在说明中填写)")]
            其他=1,
            信息费=2,
            [Description("(国研网数据库)")]
            信息费一=3,
            信息服务费=4,
            咨询费=5
    
        }

    handler层获取枚举值和描述部分,并进行替换拼接:

    using System.ComponentModel;
    
    #region 获取枚举特殊字符描述,此方法的unit按照系统默认的开始计算,不是按照定义的value计算,系统默认第一个unit从0开始
            public static String GetEnumSpecialWordDescription(int dataUnit)
            {
                var e = Enum.GetNames(typeof(InvoiceType))[dataUnit];
                InvoiceType enumValue = (InvoiceType)Enum.Parse(typeof(InvoiceType), e);
                if (e == null)
                {
                    return "";
                }
                var enumInfo = enumValue.GetType().GetField(e.ToString());
                var enumAttributes =
                    (DescriptionAttribute[])enumInfo.GetCustomAttributes(typeof(DescriptionAttribute), false);
                return enumAttributes.Length > 0 ? enumAttributes[0].Description : "";
            }
            #endregion 
    
    #region 根据传递的条件不同,拼接下拉框的json串,按照枚举的是设定,一一对应拼接
            private string InitCommonJsonForComboBox(string et)
            {
                StringBuilder json = new StringBuilder();
                //获取枚举类型的通用工厂类
                Type enumType = GetEnumTypeFactory(et);
                string[] enumNameArray = Enum.GetNames(enumType);
                Array enumValueArray = Enum.GetValues(enumType);
                json.Append("[");
                for (int i = 0; i < enumNameArray.Length; i++)
                {
                    //for (int j = 0; j < enumValueArray.Length; j++)
                    //{
                    json.Append("{\"id\":" + Convert.ToInt32(Enum.Parse(enumType, enumNameArray[i], true)) + ",\"text\":\"" + (enumType.Name == "InvoiceType" ? ((enumNameArray[i]+GetEnumSpecialWordDescription(i)).Replace("","")) : enumNameArray[i]) + "\"");
                    json.Append("}");
                    if (i != (enumNameArray.Length - 1))
                    {
                        json.Append(",");
                    }
                    //}
    
                }
                json.Append("]");
                return json.ToString();
            }
            #endregion

    小弟这个方法比较笨拙,如何高见,不吝赐教,谢谢各位

  • 相关阅读:
    转:五年java人的一点感悟
    6:ZigZag Conversion
    5:Longest Palindromic Substring
    4:Median of Two Sorted Arrays
    3:Longest Substring Without Repeating Characters
    读写分离
    docker swarm部署spring cloud服务
    kubeadm方式安装kubernetes
    《Spring Boot 实战》随记
    https部署
  • 原文地址:https://www.cnblogs.com/chzbgb/p/6801472.html
Copyright © 2011-2022 走看看