2014-10-16 5 views
0

Я написал собственный атрибут для DisplayName следующим образом.MVC атрибут пользовательского отображения

namespace CRM.Model 
{ 
    public class LocalizedDisplayNameAttribute : DisplayNameAttribute 
    { 
     private readonly string resourcekey; 

     public LocalizedDisplayNameAttribute(string resourceId) 
      : base(GetMessageFromResource(resourceId)) 
     { 

     } 

     public static string GetMessageFromResource(string resourceId) 
     { 
      // My Localization logic 
      return LocalizationResourceProvider.Current.GetString(resourceId); 
     }  
    } 
} 

Когда модель загружена/инициирована впервые, указанный выше класс специальных атрибутов называется успешно.

Но если, я отправлю обратно страницу, тогда она не будет вызвана.

Например, когда я меняю свой язык с английского на французский. он по-прежнему отображает английский контент.

Почему это так? Как я могу решить эту проблему? Можем ли мы загрузить данные модели явно

+0

Yo do реализовать локализованный System.ComponentModel.DataAnnotations.DisplayAttribute, который можно использовать [Display (ResourceType = typeof (yourResxClass), Name = "ResourceName")]. – AlexC

+0

Не могли бы вы дать мне пример этого? Я не хочу напрямую обращаться к ресурсам. Ресурсы. он должен быть вызван из моей пользовательской логики – David

ответ

0

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

0

Попробуйте зарегистрировать свой атрибут при запуске приложения, see подобная тема.

Смежные вопросы