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
}

MVC5在@Html.ActionLink中显示漂亮的枚举DisplayName

 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 })