ASP.NET Core:在控制器类中使用“ DisplayFor”方法来检索本地化的枚举显示属性

问题描述 投票:1回答:1

我这样在我的项目中有一个enum

 public enum Gender
 {
      [Display(Name="Gender.Male")]
      Male,

      [Display(Name="Gender.Female")]
      Female
 }

[当我使用下面的代码时,它将自动从Gender文件中检索.resx值的名称,并在剃刀视图中显示转换后的值。

 @Html.DisplayFor(x => x.Gender) //result: Männlich

但是,如何在后端获取Gender值的本地化名称?或如何在控制器类中使用DisplayFor或类似的东西?

 //Desired
 string gender = DisplayFor(x => x.Gender); //gender = "Männlich"

我应该编写一种新方法而不是使用DisplayFor吗?

c# asp.net-core-3.1
1个回答
0
投票

通过代码获取名称(或任何其他属性)

// Example for a specifi value
string enumName = Gender.Male.GetType()
   .GetMember(Gender.Male.ToString())
   .SingleOrDefault()
   .GetCustomAttribute<DisplayAttribute>()
   .GetName();

现在您有了名称,请使用GetString(String, CultureInfo) 从Resx获取名称>

© www.soinside.com 2019 - 2024. All rights reserved.