Локализуйте 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 для примера того, как сделать это.