Я использую перечисления для некоторых свойств, которые имеют только определенное количество опций (например, Пол). Я делаю эти перечисления с помощью @Html.EnumDropDownListFor(...)
, который использует атрибут Display
, чтобы правильно отображать параметры (эти значения исходят из ресурса, потому что они должны быть переводимыми).Как добавить атрибут Display к внешнему перечислению?
public enum Gender
{
[Display(Name = "LabelMale", ResourceType = typeof(Translation))]
Male,
[Display(Name = "LabelFemale", ResourceType = typeof(Translation))]
Female
}
Но эти перечисления приходят из внешнего проекта, который не может быть отредактирован или не имеет доступ к System.ComponentModel.DataAnnotations
именам. Поэтому я не могу добавить необходимые атрибуты Display
к значениям в этом перечислении.
Viewmodels имеют ту же проблему, но для моделей viewmodels я могу использовать атрибут MetadataType(...)
.
Однако это не работает для перечислений.
Есть ли аналогичное решение, чтобы я мог иметь переводимые перечисления?
Вы думали определить свои собственные перечисления и написать класс для преобразования между вашим и внешним проектом? Если их много, отражение тоже пригодится. – Hamed
@ Hamed Да, я считаю это, но я надеялся, что в asp.net есть лучшее решение, поэтому мне не нужно изобретать колесо. – Waaghals