为ASP.NET页/usercontrol指定自定义资源文件

为ASP.NET页/usercontrol指定自定义资源文件,asp.net,localization,resourcemanager,resource-file,Asp.net,Localization,Resourcemanager,Resource File,如果我有一个名为Default.aspx的页面,ASP.NET会自动使用App_LocalResources中名为Default.aspx.resx的资源文件来本地化页面中的服务器控件 但是由于某些原因,我需要选择另一个文件,比如Default-Custom.aspx.resx。为了提供一些背景,我已经有了Default.aspx.resx,但是一些用户需要向他们显示不同的内容,我将把这些内容放在Default-Custom.aspx.resx中 是否可以在ASP.NET中选择用于Templat

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

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

是否可以在ASP.NET中选择用于TemplateControl的资源文件(除了编写自定义资源提供程序之外)?

请查看此处:

此方法使用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");
    }
}
有关这方面的更多信息:


Hmmm。。。我已经编写了一个定制的ResourceProvider/ResourceManager和其他支持基础架构来实现我所需要的功能…感谢您回复Leniel。正如我在对原始帖子的评论中所提到的,我已经为自己编写了一个定制的ResourceProvider,它可以根据我的需要在一个极其深刻和复杂的层次结构中解析资源。此外,它还可以处理.resx文件(在WSP环境中)和.resources文件(在完全预编译或WAP环境中)。谢谢你的评论。@r\u亲爱的:我没看到你的评论…:)我已经接受了这篇文章作为答案,因为它正确地提供了问题的解决方案(尽管我应该更好地构建它,因为我的需求不同:)。感谢Leniel回答了这个问题,并提供了一些额外的阅读材料,感谢r_honey留下了这个问题。这有助于其他人稍后提出同样的问题,比如我:)。