在我的asp.net MVC5项目中,我正在使用Enums的[Display(Name =“String”)]注释,只要我使用它就能正常工作:
@Html.DisplayFor(modelItem => item.Category)
现在我想将我漂亮的Enum名称用作
中的链接文本@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
}
答案 0 :(得分:2)
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 })