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

前端之家收集整理的这篇文章主要介绍了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相关文章