Показать имя перечисления для соответствующего идентификатора в .NET Core - PullRequest
0 голосов
/ 11 июня 2019

Я занимаюсь разработкой веб-приложения и .NET Core и недавно столкнулся с этой проблемой.

Показывает идентификатор значения перечисления в: @Html.DisplayFor(model => model.MutatieReden), но я хочу показать имя для перечисления, так как это представление «Подробности».

Мой enum построен так, я что-то упустил?:

//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. Пробовал эти решения уже.

Ответы [ 2 ]

1 голос
/ 12 июня 2019

Атрибут Display вообще не нужен:

Reden enum_value = Reden.AdministratieveReden;
string enum_name = Enum.GetName(typeof(Reden), enum_value);
1 голос
/ 12 июня 2019

Для целей отображения, я думаю, мы можем использовать:

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

Или вы даже можете создать дополнительные свойства только для отображения:

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

Добавить этот статический метод в статический класскак открытый статический класс EnumHelper

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

PS: я не тестировал компилятор, но он, вероятно, работает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...