2014-10-16 91 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

喲確實有一個可以使用[Display(ResourceType = typeof(yourResxClass),Name =「ResourceName」)]的本地化System.ComponentModel.DataAnnotations.DisplayAttribute。 – AlexC 2014-10-16 14:09:54

+0

你能給我舉個例子嗎?我不想直接訪問Resources.Resources。它應該從我的自定義邏輯中調用 – David 2014-10-16 16:03:06

回答

0

那麼,它是在構造函數中設置語言。這就是爲什麼它只在模型第一次加載/啓動時才起作用。不知道解決方案的其餘部分如何工作,但您還需要在其他位置運行本地化邏輯。

0

嘗試在應用程序啓動時註冊屬性,see類似的線程。