asp.Net   发布时间:2022-04-07  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了asp.net-mvc – MVC.net获取枚举显示名称而不必参考枚举类型在视图中大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我在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()

大佬总结

以上是大佬教程为你收集整理的asp.net-mvc – MVC.net获取枚举显示名称而不必参考枚举类型在视图中全部内容,希望文章能够帮你解决asp.net-mvc – MVC.net获取枚举显示名称而不必参考枚举类型在视图中所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。