加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – MVC.net获取枚举显示名称而不必参考枚举类型在视

发布时间:2020-12-15 18:45:28 所属栏目:asp.Net 来源:网络整理
导读:我在ViewModelBase类中具有以下帮助方法,它由其他视图模型继承: public string GetEnumNameT(Enum value) { Type enumType = typeof(T); var enumValue = Enum.GetName(enumType,value); MemberInfo member = enumType.GetMember(enumValue)[0]; var attrs
我在ViewModelBase类中具有以下帮助方法,它由其他视图模型继承:
public string GetEnumName<T>(Enum value)
        {
            Type enumType = typeof(T);
            var enumValue = Enum.GetName(enumType,value);
            MemberInfo member = enumType.GetMember(enumValue)[0];

            var attrs = member.GetCustomAttributes(typeof(DisplayAttribute),false);
            var outString = ((DisplayAttribute)attrs[0]).Name;

            if (((DisplayAttribute)attrs[0]).ResourceType != null)
            {
                outString = ((DisplayAttribute)attrs[0]).GetName();
            }

            return outString;
        }

我就这样从这个角度来看:

<p>
@{var rel = Model.GetEnumDisplayName<Enums.wheteverEnum>(Model.wheteverEnum); }
@rel
</p>

问题是 – 我可以使用这种方法,所以我不必告诉它枚举的类型?基本上我想对所有的枚举做这个:

@ Model.GetEnumDisplayName(Model.wheteverEnum)

没有类型,没有T,不需要添加对枚举命名空间在视图…中的引用

可能?

解决方法

您可以简单地删除类型参数并使其成为扩展方法。
public static string DisplayName(this Enum value)
    {
        Type enumType = value.GetType();
        var enumValue = Enum.GetName(enumType,value);
        MemberInfo member = enumType.GetMember(enumValue)[0];

        var attrs = member.GetCustomAttributes(typeof(DisplayAttribute),false);
        var outString = ((DisplayAttribute)attrs[0]).Name;

        if (((DisplayAttribute)attrs[0]).ResourceType != null)
        {
            outString = ((DisplayAttribute)attrs[0]).GetName();
        }

        return outString;
    }

    @Model.wheteverEnum.DisplayName()

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读