2012-03-04 67 views
3

我一直試圖在web.config文件中設置自定義resourceProviderFactory但它總是被忽略,我的web.config文件看起來像下面resourceProviderFactoryType在web.config文件中忽略

<globalization culture="auto" resourceProviderFactoryType="MyProject.CustomResourceFactory, MyProject"></globalization> 

我CustomResourceFactory類永遠不會被解僱,在構造函數中設置斷點永遠不會到達。

拼寫錯誤的全球化部分中的類名不會引發任何異常,這是正常的嗎?

我已經在多個項目中嘗試了這個(認爲我正在處理的項目配置有誤或某些東西),但結果相同。

我使用C#asp.net MVC3,

有沒有人有一個線索,爲什麼發生這種情況,是有沒有辦法改變ResourceProviderFactory在運行時?

謝謝。

回答

2

我遇到了同樣的問題,並沒有完全理解你對第一個答案的評論。現在我已經解決了它,但我認爲我會爲其他人詳細說明。

http://publicityson.blogspot.ca/2010/11/aspnet-mvc-razor-view-engine-and.html

他創造的助手打電話給他定製資源,在視圖中調用 ViewContext.HttpContext.GetGlobalResourceObject(classKey, resourceKey)的剃刀的要求是很長的,這就造成了像:

public static class CommonHtmlExtensions 
{ 
    public static object GetGlobalResource(this HtmlHelper htmlHelper, string classKey, string resourceKey) 
    { 
     return htmlHelper.ViewContext.HttpContext.GetGlobalResourceObject(classKey, resourceKey); 
    } 
    //several other methods. 
} 

允許他使用@Html.GetGlobalResource("CommonText", "Some_ResourceKey")在剃刀視圖。

對於在數據註解中保留強類型和可用的東西也非常有用,下面的鏈接顯示如何使用T4模板爲數據庫中的每個資源項創建常量。 http://carrarini.blogspot.ca/2010/08/localize-aspnet-mvc-2-dataannotations.html

+1

這個設置只是簡單地消失了嗎? – 2014-02-27 16:05:17

+0

這似乎不適用於mvc 5! – hazjack 2017-08-16 04:00:44

0

對mvc3中的剃刀視圖做一些思考,我沒有看到使用這個resourceProviderFactory的任何證據,這就是爲什麼你的自定義資源提供者沒有被觸及,我想這個功能並不是用於MVC和它的唯一可用Web窗體,使用資源MVC

須由只是指向您的RESX生成的類,〔實施例:

@ 
    { 
     var resources = MyResources.ResourceClass; 
    } 

<p>@resources.MyTitle</p> 

,如果你想使用加載你的資源的自定義類,你可以簡單點上面的變量資源到不同的分類s,

但這裏也是我認爲可以實現它的另一種方式。

你可以在瀏覽文件夾改變pageBaseType在web.config中自己的類,從WebViewPage

繼承了這個類,你可以創建一個返回自定義類加載的實例的屬性你的資源。

通過這樣做,您可以稍後在視圖文件夾中的任何視圖中訪問此屬性。

做任何適合你的情況。如果有更好的方式,請分享。

+0

那麼我發現,如果做HttpContext.GetGlobalResourceObject(..)它會在我的提供者。我已經構建了基本的自定義數據引用屬性,並使用html助手來顯示本地化文本(Html.Localize(type,key)) – Michael 2012-03-22 17:31:51