显示 .NET Core 中相应 ID 的枚举名称值



我正在开发一个Web应用程序和.NET Core,最近遇到了这个问题。

它在以下位置显示枚举值的 Id:@Html.DisplayFor(model => model.MutatieReden)但我想显示枚举的名称,因为这是一个"详细信息"视图。

我的枚举是这样构建的,我错过了什么吗?

//Class property
public Reden? MutatieReden { get; set; }
//Enum
public enum Reden
{
[Display(Name = "Niet van toepassing")] NietVanToepassing = 1,
[Display(Name = "Administratieve reden")] AdministratieveReden = 2,
[Display(Name = "Niet akkoord klant")] NietAkkoordKlant = 3,
[Display(Name = "Incasso blokkade")] IncassoBlokkade = 4,
}

我尝试了各种解决方案,但其中大多数都是针对常规 ASP.NET MVC,答案都已经过时了。

编辑:这不是重复的,因为这适用于 ASP.NET Core,其他解决方案适用于.NET MVC 5.1。已经尝试了这些解决方案。

出于显示目的,我认为我们可以使用:

@Html.Display(Model.MutatieReden.GetDisplayName())

或者,您甚至可以创建仅用于显示的额外属性:

public string MutatieRedenText { get => this.MutatieReden.GetDisplayName(); }

将此静态方法添加到静态类中,例如公共静态类枚举助手

public static string GetDisplayName(this Enum val)
{
return val.GetType()
.GetMember(val.ToString())
.FirstOrDefault()
?.GetCustomAttribute<DisplayAttribute>(false)
?.Name
?? val.ToString();
}

PS:我还没有用编译器测试过,但它可能有效

根本不需要Display属性:

Reden enum_value = Reden.AdministratieveReden;
string enum_name = Enum.GetName(typeof(Reden), enum_value);

最新更新