程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#基礎知識 >> 關於c#中枚舉類型支持顯示中文的擴展說明

關於c#中枚舉類型支持顯示中文的擴展說明

編輯:C#基礎知識

代碼如下:

AuditEnum.cs :

public enum AuditEnum
{
   Holding=0,
  
    Auditing=1,

    Pass=2,

    Reject=3     
}

以asp.net為例 , 程序中某個方法可能會這樣使用枚舉值 :
public void HandleAudit(int userID, AuditEnum ae)
{
  if (ae==AuditEnum.Pass)
  {
    //do something
  }
  else if (ae==AuditEnum.Reject)
  {
    //do other something
  }
}

asp.net頁面往往需要顯示中文枚舉信息 :    

序號
項目
 狀態
 審核人

請假單
 審核通過
 張三

解決方法 : 給枚舉項增加DescriptionAttribute後利用反射來獲取中文信息.

步驟 :

1 . 在定義枚舉AuditEnum的類中添加名稱空間System.ComponentModel , 給每個枚舉項加DescriptionAttribute , 示例代碼如下 :

代碼如下:

using System.ComponentModel;

public enum AuditEnum
{
    [Description("未送審")]
    Holding=0,  

  [Description("審核中")]
    Auditing=1,

    [Description("審核通過")]
    Pass=2,

    [Description("駁回")]
    Reject=3     
}

2 . 自定義一個類EnumService.cs , 增加靜態方法GetDescription()根據傳入的枚舉值來讀取Description信息 , 示例代碼如下 :

代碼如下:

public class EnumService
{
    public static string GetDescription(Enum obj)
    {
        string objName = obj.ToString();
        Type t = obj.GetType();
        FieldInfo fi = t.GetField(objName);

        DescriptionAttribute[] arrDesc = (DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false);
    
        return arrDesc[0].Description;
    }
}

3 . 在輸出枚舉值的地方增加對EnumService.GetDescription()的調用 , 示例代碼如下 :

代碼如下:

asp.net頁面代碼:
<asp:Repeater ID="AuditRepeater" runat="server" OnItemDataBound="AuditRepeater_OnItemDataBound">
     <ItemTemplate>
         //something ui code is here ....
         <asp:Literal ID="AuditText" runat="server"></asp:Literal>
         //something ui code is here ....
     </ItemTemplate>
</asp:Repeater>

asp.net頁面後台代碼:
protected void AuditRepeater_OnItemDataBound(object sender, RepeaterItemEventArgs arg)
{
        if (arg.Item.ItemType == ListItemType.Item)
        {
        Literal audit = arg.Item.FindControl("AuditText") as Literal;

            AuditEnum ae = AuditEnum.Pass; //根據項目的實際情況賦值,這裡為簡化賦值AuditEnum.Pass           
            audit.Text = EnumService.GetDescription(we);
        }
}

全文完 .

以上代碼運行於VS2010 , 有任何問題請在下方留言 , 喜歡就點推薦.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved