Enum: 显示Description Attribute的值

1.定义一个Enum类型:

namespace MultipleLanguage.Models
{
    public enum EnumDef
    {
        [Description("周一")]
        Monday,
        [Description("周二")]
        TuesDay,
        [Description("周三")]
        WendesDay,
        [Description("周四")]
        ThursDay
    }
}

2.获取Enum类型上的Description值(Controller)

namespace MultipleLanguage.Controllers
{
    public class ShowEnumDescriptionDemoController : Controller
    {
        // GET: ShowEnumDescriptionDemo
        public ActionResult Index()
        {
            Enum monday = MultipleLanguage.Models.EnumDef.Monday;
            ViewBag.Des = GetEnumDescription(monday);
            ViewBag.Des1 = GetEnumDesciptionCLD(monday);
            return View();
        }

        //法一:MemberInfo.GetCustomAttributes
        private string GetEnumDescription(Enum value)
        {
            // Get the Description attribute value for the enum value
            FieldInfo fi = value.GetType().GetField(value.ToString());
            DescriptionAttribute[] attributes = (DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false);
            if (attributes.Length > 0)
                return attributes[0].Description;
            else
                return value.ToString();
        }

        //法二:Attribute.GetCustomAttributes Method
        private string GetEnumDesciptionCLD(Enum value)
        {
            FieldInfo field = value.GetType().GetField(value.ToString());
            DescriptionAttribute attribute = Attribute.GetCustomAttribute(field, typeof(DescriptionAttribute)) as DescriptionAttribute;
            return attribute == null ? string.Empty : attribute.Description;
        }
    }
}

3.Views

<h2>显示Enum类型的Description值</h2>
<p>法一:MemberInfo.GetCustomAttributes Method</p>
@ViewBag.Des
<p>法二:Attribute.GetCustomAttributes Method</p>
@ViewBag.Des1

4.测试结果如下:

 

posted @ 2021-04-12 10:59  katesharing  阅读(159)  评论(0)    收藏  举报