2009-06-03 70 views
1

我正在本地化應用程序,並且需要爲所有視圖的JS應用程序的JS部分提供本地和全局資源的JSON表示。我目前的想法是我會實現HtmlHelper擴展方法,如GetLocalResourcesJSON/GetGlobalResourcesJSON應該對所有資源鍵+值進行編碼,並返回JSON編碼爲字符串(我也會實現緩存)。asp.net MVC - 如何獲取完整的本地和全球資源

目前我能夠從屬於當前視圖的全局或本地資源中檢索單個特定鍵(使用httpContext.GetGlobalResourceObject/GetLocalResourceObject),但我無法找到如何檢索整個資源對象,迭代所有的鍵+值。有沒有什麼方法可以實現這個目標?

它看起來像ResourceProviderFactory可能是這個問題的關鍵,但它不能在任何地方公開訪問。我可以實例化ResourceExpressionBuilder並使用反射來檢索使用GetLocal/GlobalResourceProvider()方法的提供程序,但我不喜歡在這裏使用反射...

回答

0

此刻 「ASP.NET從RESX文件中獲取價值」 我解決了它使用反射像這樣:var ResourceManager的= ResourceExpressionBuilder.GetLocalResourceProvider(virtualPath).CreateResourceManager();並使用resourceManager.GetResourceSet()遍歷所有資源項目。我不喜歡雖然這骯髒的解決方案;(

1

如果您可以獲得ResourceManager的保留,則可以使用GetResourceSet()方法返回給定文化的所有本地化字符串。

App_GlobalResources將被編譯到「Resources」命名空間中,您可以在那裏訪問ResourceManager(即Resources.General.ResourceManager)對於App_LocalResources,這有點棘手,這是我傾向於不使用的原因之一App_ LocalResources。看到這個[post] [1]尋找一個可能的解決方案。

<dl> 
<% foreach (DictionaryEntry entry in Resources.Global.ResourceManager.GetResourceSet(CultureInfo.CurrentCulture, true, true)) { %> 
    <dt><%= entry.Key %></dt> 
    <dd><%= entry.Value %></dd> 
<% } %> 
</dl> 

返回:

<dl> 
    <dt>SiteName</dt> 
    <dd>The Site Name</dd> 

    <dt>Copyright_Text</dt> 
    <dd>Copyright 2009</dd> 

    <dt>Copyright_Html</dt> 
    <dd>Copyright &copy; 2009</dd> 
</dl> 

[1]:http://blog.mattweber.name/?p=39 -

+0

此刻我解決它使用反射像這樣: VAR的ResourceManager = ResourceExpressionBuilder.GetLocalResourceProvider(virtualPath) .CreateResourceManager(); 比使用resourceManager.GetResourceSet( )遍歷所有的資源項目 雖然我不喜歡這個骯髒的解決方案;( – Buthrakaur 2009-06-04 10:31:05

相關問題