C#语言中提供了枚举和整型之间的强制转换功能(SelectItem)

[csharp]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <span style="font-family: Arial, Helvetica, sans-serif;">C#语言中提供了枚举和整型之间的强制转换功能,但这仅限于没有给枚举类型中各个元素指定基础类型值的</span>  
情况, 如下:

enum Days {Sat, Sun, Mon, Tue, Wed, Thu, Fri};

其中Sat的值是0, Sun是1,以此类推, 这时如果要将整型值转换为枚举类型,可以直接作显式强类型转换即可,

int i_day = 1;
Days day = (Days) i_day; // day == Days.Sun


获取枚举的描述方法如下:

定义Model

[csharp]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. /// <summary>  
  2. /// 兼职工作薪资  
  3. /// </summary>  
  4. public enum PriceTypeEnum  
  5. {  
  6.     /// <summary>  
  7.     /// 天  
  8.     /// </summary>  
  9.     [Description("元/天")]  
  10.     day = 1,  
  11.     /// <summary>  
  12.     /// 小时  
  13.     /// </summary>  
  14.     [Description("元/小时")]  
  15.     hour = 2,  
  16.     /// <summary>  
  17.     /// 周  
  18.     /// </summary>  
  19.     [Description("元/周")]  
  20.     week = 3,  
  21.     /// <summary>  
  22.     /// 月  
  23.     /// </summary>  
  24.     [Description("元/月")]  
  25.     month = 4  
  26. }  

通用 方法:

[csharp]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. public class EnumHelper  
  2. {  
  3.     public static string GetDescription(Enum value)  
  4.     {  
  5.         FieldInfo fi = value.GetType().GetField(value.ToString());  
  6.         DescriptionAttribute[] attributes = (DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false);  
  7.         if ((attributes != null) && (attributes.Length > 0))  
  8.             return attributes[0].Description;  
  9.         else  
  10.             return value.ToString();  
  11.   
  12.     }  
  13.     /// <summary>  
  14.     /// 获取枚举的描述文本  
  15.     /// </summary>  
  16.     /// <param name="e">枚举成员</param>  
  17.     /// <returns></returns>  
  18.     public static string GetEnumDescription(object e)  
  19.     {  
  20.         //获取字段信息  
  21.         System.Reflection.FieldInfo[] ms = e.GetType().GetFields();  
  22.         Type t = e.GetType();  
  23.         foreach (System.Reflection.FieldInfo f in ms)  
  24.         {  
  25.             //判断名称是否相等  
  26.             if (f.Name != e.ToString()) continue;  
  27.             //反射出自定义属性  
  28.             foreach (Attribute attr in f.GetCustomAttributes(true))  
  29.             {  
  30.                 //类型转换找到一个Description,用Description作为成员名称  
  31.                 System.ComponentModel.DescriptionAttribute dscript = attr as System.ComponentModel.DescriptionAttribute;  
  32.                 if (dscript != null)  
  33.                     return dscript.Description;  
  34.             }  
  35.         }  
  36.         //如果没有检测到合适的注释,则用默认名称  
  37.         return e.ToString();  
  38.     }  
  39.   
  40.     /// <summary>  
  41.     ///  把枚举的描述和值绑定到DropDownList  
  42.     /// </summary>  
  43.     /// <param name="enumType"></param>  
  44.     /// <returns></returns>  
  45.     public static List<SelectListItem> GetSelectList(Type enumType)  
  46.     {  
  47.         List<SelectListItem> selectList = new List<SelectListItem>();  
  48.   
  49.         foreach (object e in Enum.GetValues(enumType))  
  50.         {  
  51.             selectList.Add(new SelectListItem { Text = GetEnumDescription(e), Value = ((int)e).ToString() });  
  52.         }  
  53.   
  54.         return selectList;  
  55.     }  
  56.   
  57. }  


最后使用时:

[csharp]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. @Jyson.ZhanShiQuan.Common.EnumHelper.GetEnumDescription((Jyson.ZhanShiQuan.Model.Enum.PriceTypeEnum)@Model.PriceType)  


界面上,可以这样使用:

 @Html.DropDownListFor(model => model.Channel, Uxiaoyuan.Common.EnumHelper.GetSelectList(typeof(Uxiaoyuan.Model.Enum.Home.ChannelEnum)), "=请选择=")


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值