Локализуйте DisplayNameAttributes в ActionFilter?

Можно ли получить доступ к DisplayNameAttributes, которые используются в моем ViewData.Model, чтобы я мог их локализовать перед отправкой в ​​представление? Что-то вроде этого:

Public Void OnActionExecuted(ActionExecutedContext: filterContext) {
  foreach (DisplayNameAttribute attr in filterContext...) {
    attr.TheValue = AppMessages.GetLocazation(attr.TheValue);
  }
}

Чего мне не хватает, так это как получить доступ к атрибутам. Это вообще возможно?

PS: Мы используем vb.net на моей работе, и это проникает в мой мозг. Так что извинения, если мой C# немного.

2 ответа

Решение

Не изменяйте значения атрибутов во время выполнения. В лучшем случае это будет запрет (так как вы будете работать с копиями экземпляров атрибута); в худшем случае это приведет к условиям гонки в вашем коде. Всегда рассматривайте экземпляры атрибута как неизменяемые.

Если вам нужно локализовать [DisplayName], создайте его подкласс и переопределите виртуальное свойство DisplayName. Посмотрите Локализацию DisplayNameAttribute для примера того, как сделать это.

Другие вопросы по тегам