如何获取索引页上可枚举的显示名称属性
How do I get the display name attribute for an enumerable on an index page
我的目标是从我的枚举中获取显示名称属性,这样我就可以在索引页上显示它们的值,而不会出现奇怪的格式,而是清晰易读的行。
我的枚举看起来像这样:
public enum UserStatus
{
[Display(Name = "Display Name 1")]
_x = 0,
[Display(Name = "Display Name 2")]
_y = 1,
[Display(Name = "Display Name 3")]
_z = 2
}
HTML 看起来像:
@Html.DisplayFor(modelItem => item.UserStatus)
我试过使用 this suggestion,但我遇到了一些奇怪的错误,无法让它正常工作。如果有人知道如何从枚举中获取属性,那么我将不胜感激。
这是一个获取带有枚举值的显示名称的演示:
枚举扩展:
public static class EnumExtensions
{
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;
}
}
查看:
@EnumExtensions.DisplayName(UserStatus._x)
@EnumExtensions.DisplayName(UserStatus._y)
@EnumExtensions.DisplayName(UserStatus._z)
结果:
更新:
查看:
@foreach (UserStatus userStatus in (UserStatus[])Enum.GetValues(typeof(UserStatus)))
{
@EnumExtensions.DisplayName(userStatus)
}
结果:
我的目标是从我的枚举中获取显示名称属性,这样我就可以在索引页上显示它们的值,而不会出现奇怪的格式,而是清晰易读的行。
我的枚举看起来像这样:
public enum UserStatus
{
[Display(Name = "Display Name 1")]
_x = 0,
[Display(Name = "Display Name 2")]
_y = 1,
[Display(Name = "Display Name 3")]
_z = 2
}
HTML 看起来像:
@Html.DisplayFor(modelItem => item.UserStatus)
我试过使用 this suggestion,但我遇到了一些奇怪的错误,无法让它正常工作。如果有人知道如何从枚举中获取属性,那么我将不胜感激。
这是一个获取带有枚举值的显示名称的演示:
枚举扩展:
public static class EnumExtensions
{
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;
}
}
查看:
@EnumExtensions.DisplayName(UserStatus._x)
@EnumExtensions.DisplayName(UserStatus._y)
@EnumExtensions.DisplayName(UserStatus._z)
结果:
更新:
查看:
@foreach (UserStatus userStatus in (UserStatus[])Enum.GetValues(typeof(UserStatus)))
{
@EnumExtensions.DisplayName(userStatus)
}
结果: