2014-01-14 32 views
1

我有一個名爲Constants.resx的資源文件,其中包含一些字符串。從控制器我試圖訪問一個新的字符串,我剛剛添加到Constants.resx文件,但它不被編譯器識別(智能感知不顯示我剛剛添加的新字符串),當然,當我鍵入它,顯示一個錯誤。無法從mvc 4控制器訪問資源文件中的密鑰

在控制器標題下方行我已經加入:

using Resources; 

,並進入到新的弦剛添加我做到以下幾點:

Resources.Constants.NewString 

我訪問其他字符串常量。 resx文件使用相同的方法,沒有問題,它們被正確識別,但不是這個新的。

任何想法?

已更新: 我的mvc 4應用程序的資源文件是通過從App_GlobalResources上下文菜單中選擇「添加>新項目」並最終選擇「資源文件」添加的。

我的資源文件屬性是:

Build action: Content 
Copy to Output Directory: Do not copy 
Custom Tool: GlobalResourceProxyGenerator 
Custom Tool Namespace: (left blank) 

而且我使用Visual Studio 2010 Express版本。

我可以看到編譯器發出警告,說它無法在系統中找到自定義工具'GlobalResourceProxyGenerator'。

+1

如果你看到資源中的其他字符串正在嘗試清理和重建你的項目 –

+0

@MattBodily它不適用於我。我不得不手動添加到Constants.resx.cs。然後它工作。似乎每次我向資源文件添加一個新字符串時,其Constants.resx.cs都不會被重新生成。爲什麼? – user1624552

+0

似乎Visual Studio 2010 express不支持GlobalResourceProxyGenerator,必須將其更改爲ResXFileCodeGenerator(如果需要內部引用)或PublicResXFileCodeGenerator(如果需要公共引用)。然後使用App_GlobalResources.Constants.MyKey或只有使用MyProject.App_GlobalResources的情況下訪問關鍵字符串或使用Constants.MyKey。請參閱下面的鏈接:http://www.mojoportal.com/Forums/Thread.aspx?pageid=5&t=6062~-1 – user1624552

回答

1

您必須將所有資源文件的命名空間設置爲像ViewResource這樣的公共命名空間。然後將資源文件中的訪問修飾符更改爲公共。現在你可以訪問這些資源文件。

生成操作:內容

複製到輸出目錄:不復制

自定義工具:GlobalResourceProxyGenerator

自定義工具命名空間:ViewResource

訪問修飾符:公共(在所有資源文件中)