4

如果我有一个名为 Default.aspx 的页面,ASP.NET 会自动使用 App_LocalResources 中名为 Default.aspx.resx 的资源文件来本地化页面中的服务器控件。

但由于某种原因,我需要选择另一个文件,比如说 Default-Custom.aspx.resx。为了提供一些背景知识,我已经有了 Default.aspx.resx,但有些用户需要向他们显示不同的内容,我将把它们放在 Default-Custom.aspx.resx 中。

是否可以在 ASP.NET 中选择用于 TemplateControl 的资源文件(缺少编写自定义 ResourceProvider)?

4

1 回答 1

3

看看这里:

ResourceManager.GetResourceFileName 方法

此方法使用 CultureInfo 的 Name 属性作为除不变区域性之外的所有区域性的文件名的一部分。此方法不查看程序集的清单或接触磁盘,仅用于构造资源文件名(适合传递给 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");
    }
}

有关此的更多信息:

创建自定义资源提供者

BuildManager 和资源处理的底层

于 2011-05-04T21:30:24.623 回答