文章詳情頁
ASP.NET MVC把數據庫中枚舉項的數字轉換成文字
瀏覽:2日期:2022-06-08 15:14:10
標題可能無法表達我的本意。比如,有這樣一個枚舉:
public enum MyChoice { MyFirstChoice = 0, MySecondChoice =1, MyThirdChoice = 2 }
數據庫中,某表某字段保存值為"0,1,2",在顯示的時候,我們希望是"第一個選擇,第二個選擇,第三個選擇"。如何做呢?
可以為枚舉項上面標注自定義特性。先自定義一個特性如下:
public class EnumDisplayNameAttribute : Attribute { private string _displayName; public EnumDisplayNameAttribute(string displayName) { _displayName = displayName; } public string DisplayName { get { return _displayName; } } }
然后,把自定義特性標注放到枚舉項上去。
public enum MyChoice { [EnumDisplayName("我的第一個選擇")] MyFirstChoice = 0, [EnumDisplayName("我的第二個選擇")] MySecondChoice =1, [EnumDisplayName("我的第三個選擇")] MyThirdChoice = 2 }
現在,需要一個幫助方法,能讀出枚舉項上的自定義特性EnumDisplayName。
public class EnumExt { /// <summary> /// 獲取枚舉項的注釋 /// </summary> /// <param name="e">枚舉項</param> /// <returns></returns> public static string GetEnumDescription(object e) { //獲取枚舉項 Type t = e.GetType(); //獲取枚舉項的字段 FieldInfo[] fis = t.GetFields(); foreach (FieldInfo fi in fis) { //如果當前字段名稱不是當前枚舉項 if (fi.Name != e.ToString()) { continue;//結束本次循環 } //如果當前字段的包含自定義特性 if (fi.IsDefined(typeof (EnumDisplayNameAttribute), true)) { //獲取自定義特性的屬性值 return (fi.GetCustomAttributes(typeof(EnumDisplayNameAttribute), true)[0] as EnumDisplayNameAttribute).DisplayName; } } return e.ToString(); } public static List<SelectListItem> GetSelectList(Type enumType) { List<SelectListItem> selectList = new List<SelectListItem>(); //selectList.Add(new SelectListItem{Text = "--請選擇--",Value = ""}); foreach (object e in Enum.GetValues(enumType)) { selectList.Add(new SelectListItem { Text = GetEnumDescription(e), Value = ((int)e).ToString() }); } return selectList; } }
以上,
GetEnumDescription方法根據枚舉項獲取其上的自定義特性EnumDisplayNameAttribute的DisplayName屬性值。
GetSelectList方法根據枚舉的Type類型返回SelectListItem集合,通常在ASP.NET MVC中使用。
最后,就能實現本篇的需求:
static void Main(string[] args) { string myChoiceInt = "0,1,2"; string[] choiceArr = myChoiceInt.Split(","); string temp = string.Empty; foreach (string item in choiceArr) { //轉換成枚舉的類型 short enumValShort = short.Parse(item); temp = temp + EnumExt.GetEnumDescription((MyChoice)enumValShort) + ","; } Console.WriteLine(temp.Substring(0, temp.Length - 1)); Console.ReadKey(); }
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對的支持。如果你想了解更多相關內容請查看下面相關鏈接
標簽:
ASP.NET
相關文章:
1. ASP.NET MVC通過勾選checkbox更改select的內容2. PHP laravel實現配置使用多數據庫3. python中sqllite插入numpy數組到數據庫的實現方法4. Python連接mysql數據庫及簡單增刪改查操作示例代碼5. ASP.NET MVC使用JSAjaxFileUploader插件實現單文件上傳6. ASP.NET MVC視圖頁使用jQuery傳遞異步數據的幾種方式詳解7. Python查詢oracle數據庫速度慢的解決方案8. python pymysql鏈接數據庫查詢結果轉為Dataframe實例9. Python web框架(django,flask)實現mysql數據庫讀寫分離的示例10. Java連接數據庫oracle中文亂碼解決方案
排行榜
