MVC5在@Html.ActionLink中显示漂亮的枚举DisplayName
本文关键字:漂亮 枚举 DisplayName 显示 @Html ActionLink MVC5 | 更新日期: 2023-09-27 18:28:38
在我的asp.net MVC5项目中,我正在为枚举使用[Display(Name="String")]注释,只要我使用,它就可以很好地工作
@Html.DisplayFor(modelItem => item.Category)
现在我想在中使用我漂亮的枚举名称作为链接文本
@Html.ActionLink(item.Category.ToString(), "Category", new { id = item.Category })
它当然是这样工作的,但我看不到DisplayName值(带空格)。我怎样才能做到这一点?
这就是我的枚举的样子(只是为了澄清):
public enum Category
{
Book,
Movie,
[Display(Name = "TV Show")]
TVShow,
[Display(Name = "Video Game")]
Videogame,
Music,
Software,
Other
}
public static class EnumExtension
{
public static string GetDisplayName(this System.Enum en)
{
Type type = en.GetType();
MemberInfo[] memInfo = type.GetMember(en.ToString());
if (memInfo != null && memInfo.Length > 0)
{
object[] attrs = memInfo[0].GetCustomAttributes(typeof(DisplayAttribute), true);
if (attrs != null && attrs.Length > 0)
{
return ((DisplayAttribute)attrs[0]).Name;
}
}
return en.ToString();
}
}
和
@Html.ActionLink(item.Category.GetDisplayName(), "Category", new { id = item.Category })