2011-04-07 128 views
3

如果我有一個名爲Default.aspx的頁面,ASP.NET將自動使用App_LocalResources中名爲Default.aspx.resx的資源文件來本地化頁面中的服務器控件。爲ASP.NET頁面指定自定義資源文件/ usercontrol

但由於某種原因,我需要選擇另一個文件,比如Default-Custom.aspx.resx。爲了提供一些背景知識,我已經有了Default.aspx.resx,但有些用戶需要向他們展示不同的內容,我將把它們放在Default-Custom.aspx.resx中。

是可以選擇用於ASP.NET中的TemplateControl的資源文件(短的寫一個自定義的ResourceProvider)?

+0

嗯...我已經寫了一個自定義的ResourceProvider/ResourceManager和其他配套基礎設施來實現我所需要的... – 2011-04-09 06:07:19

回答

2

到這裏看看:

ResourceManager.GetResourceFileName Method

這種方法使用的CultureInfo的名稱 財產作爲 比不變 文化等所有文化中的文件名的一部分。此方法不看在 一個集清單或觸摸 盤,只用來構建 什麼資源文件名(適合 傳遞到ResourceReader 構造函數)或清單資源 BLOB名稱應該是。

派生類可以覆蓋此方法 尋找一種不同 擴展名,如「的.resx」,或命名 文件 完全不同的方案。

你可以嘗試這樣的事情:

public class ResxResourceManager : ResourceManager 
{ 
    protected override string GetResourceFileName(
     System.Globalization.CultureInfo culture) 
    { 
     return base.GetResourceFileName(culture);  
    } 

    public string GetResxFileName(System.Globalization.CultureInfo culture) 
    { 
     return GetResourceFileName(culture).Replace(".resources", ".resx"); 
    } 
} 

有關這方面的:

Creating a custom Resource Provider

Under the Hood of BuildManager and Resource Handling

+0

感謝您回覆Leniel。正如我在對原文的評論中所提到的,我已經爲自己編寫了一個自定義的ResourceProvider,它可以根據我的需要在極其複雜的層次結構中解析資源。 此外,它可以處理.resx文件(在WSP環境中)以及.resources(在完全預編譯或WAP環境中)。 感謝您的評論無所謂。 – 2011-05-05 06:21:09

+0

@r_honey:我沒有看到評論是你的...... :) – 2011-05-05 11:30:49

+0

我已經接受這篇文章作爲答案,因爲它正確地提供了一個問題的解決方案(雖然我應該更好地構架它,因爲我的需要是不同:)) – 2011-05-19 06:16:00