2012-10-25 39 views
1

我有一個ASP.net MVC網站,我想使用幾個資源文件來設置一些字符串。ASP.net MVC - 使用自定義文化 - 資源未被加載

我有一個類庫包含我的ViewModels,我添加了一個資源文件(ValidationMessages)那裏,一個字符串(稱爲測試),然後有像這樣的屬性在我的視圖模型:

 public string TestResource 
     { 
      get 
      { 
       return ValidationMessages.Test; 
      } 
     } 

這工作得很好,當我的看法輸出像這樣:

<div>@Model.TestResource</div> 

如果我添加一個ValidationMessages.en-au.resx(我的默認是EN-GB)文件到我的類庫,並創建一個不同版本的測試字符串,然後在我的global.asax中有以下內容:

protected void Application_AcquireRequestState(object sender, EventArgs e) 
{ 
    Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("en-au"); 
    Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("en-au"); 
} 

而且這也很好。

我想要做的就是添加一個自定義文化'en-gb-ly' - 我已經在我的機器上註冊了這種文化了(使用here的代碼)。當我在我的global.asax中將當前文化設置爲「en-gb-ly」,並在我的類庫中包含ValidationMessages.en-gb-ly.resx時,輸出已恢復爲測試的「基本」版本字符串,而不是我的en-gb-ly資源中的那個。

任何人有任何想法,爲什麼這可能會發生?

+0

快速檢查 - 是否有一些錯字?你寫了你添加了自定義文化'en-xx',但隨後用'en-ly'做了測試。你的意思是'en-ly'而不是'en-xx'? – Clafou

+0

對不起,Clafou - 打錯了,現在修復了。 – Paddy

+0

阿哈 - 問題現在似乎解決了。我之前一直在關注並添加並隨後刪除了一個en-us資源文件 - 該DLL仍然存在於我的構建文件夾中 - 刪除它並重建將它整理出來... – Paddy

回答

1

要檢查的第一件事是即將發佈的衛星程序集按預期進行部署。不幸的是,如果您的自定義文化未安裝在您的構建機器上,那麼它甚至不會構建!

+0

看看(更新後的問題,更簡單一點) - 我的自定義文化是「en-gb-ly」,並且在我的類庫的bin文件夾中,我有一個帶有dll的en-gb-ly文件夾。 – Paddy

+0

打算把這個標記爲答案,因爲它指出了我看待的方向,這個方向將它整理出來。 – Paddy