關(guān)于c#中枚舉類型支持顯示中文的擴(kuò)展說明
AuditEnum.cs :
public enum AuditEnum
{
Holding=0,
Auditing=1,
Pass=2,
Reject=3
}
以asp.net為例 , 程序中某個(gè)方法可能會(huì)這樣使用枚舉值 :
public void HandleAudit(int userID, AuditEnum ae)
{
if (ae==AuditEnum.Pass)
{
//do something
}
else if (ae==AuditEnum.Reject)
{
//do other something
}
}
asp.net頁面往往需要顯示中文枚舉信息?。骸 ?/P>
序號(hào)
項(xiàng)目
狀態(tài)
審核人
請(qǐng)假單
審核通過
張三
解決方法?。骸〗o枚舉項(xiàng)增加DescriptionAttribute后利用反射來獲取中文信息.
步驟?。?/P>
1?。≡诙x枚舉AuditEnum的類中添加名稱空間System.ComponentModel , 給每個(gè)枚舉項(xiàng)加DescriptionAttribute , 示例代碼如下?。?/P>
using System.ComponentModel;
public enum AuditEnum
{
[Description("未送審")]
Holding=0,
[Description("審核中")]
Auditing=1,
[Description("審核通過")]
Pass=2,
[Description("駁回")]
Reject=3
}
2 . 自定義一個(gè)類EnumService.cs , 增加靜態(tài)方法GetDescription()根據(jù)傳入的枚舉值來讀取Description信息 , 示例代碼如下?。?/P>
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 . 在輸出枚舉值的地方增加對(duì)EnumService.GetDescription()的調(diào)用 , 示例代碼如下?。?/P>
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頁面后臺(tái)代碼:
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; //根據(jù)項(xiàng)目的實(shí)際情況賦值,這里為簡(jiǎn)化賦值A(chǔ)uditEnum.Pass
audit.Text = EnumService.GetDescription(we);
}
}
全文完 .
以上代碼運(yùn)行于VS2010 , 有任何問題請(qǐng)?jiān)谙路搅粞浴?, 喜歡就點(diǎn)推薦.
相關(guān)文章
C#中實(shí)現(xiàn)輸入漢字獲取其拼音(漢字轉(zhuǎn)拼音)的2種方法
這篇文章主要介紹了C#中實(shí)現(xiàn)輸入漢字獲取其拼音(漢字轉(zhuǎn)拼音)的2種方法,本文分別給出了使用微軟語言包、手動(dòng)編碼實(shí)現(xiàn)兩種實(shí)現(xiàn)方式,需要的朋友可以參考下2015-01-01C#使用FluentHttpClient實(shí)現(xiàn)請(qǐng)求WebApi
FluentHttpClient 是一個(gè)REST API 異步調(diào)用 HTTP 客戶端,調(diào)用過程非常便捷,下面我們就來學(xué)習(xí)一下C#如何使用FluentHttpClient實(shí)現(xiàn)請(qǐng)求WebApi吧2023-12-12C#中多態(tài)現(xiàn)象和多態(tài)的實(shí)現(xiàn)方法
這篇文章主要介紹了C#中多態(tài)現(xiàn)象和多態(tài)的實(shí)現(xiàn)方法,較為詳細(xì)的分析了多態(tài)的原理與C#實(shí)現(xiàn)多態(tài)的方法,以及相關(guān)的注意事項(xiàng),需要的朋友可以參考下2015-05-05C#實(shí)現(xiàn)強(qiáng)制關(guān)閉當(dāng)前程序進(jìn)程
這篇文章主要介紹了C#實(shí)現(xiàn)強(qiáng)制關(guān)閉當(dāng)前程序進(jìn)程,本文直接給出實(shí)現(xiàn)代碼,可以實(shí)現(xiàn)完全Kill掉不留痕跡,需要的朋友可以參考下2015-06-06.NET/C# 使用Stopwatch測(cè)量運(yùn)行時(shí)間
這篇文章主要介紹了.NET/C# 使用Stopwatch測(cè)量運(yùn)行時(shí)間,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01C#中winform控制textbox輸入只能為數(shù)字的方法
這篇文章主要介紹了C#中winform控制textbox輸入只能為數(shù)字的方法,包括使用keyPress事件限制鍵盤輸入以及TextChanged事件限制粘貼等情況,來實(shí)現(xiàn)控制輸入為數(shù)字的功能,需要的朋友可以參考下2015-01-01C#使用RenderControl將GridView控件導(dǎo)出到EXCEL的方法
這篇文章主要介紹了C#使用RenderControl將GridView控件導(dǎo)出到EXCEL的方法,是C#應(yīng)用程序設(shè)計(jì)中非常實(shí)用的一個(gè)功能,需要的朋友可以參考下2014-08-08Unity封裝延時(shí)調(diào)用定時(shí)器
這篇文章主要為大家詳細(xì)介紹了Unity封裝延時(shí)調(diào)用定時(shí)器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-04-04