为 ASP.NET 页面/用户控件指定自定义资源文件

发布于 2024-10-30 20:51:59 字数 334 浏览 7 评论 0原文

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

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

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

If I have a page called Default.aspx, ASP.NET automatically uses the resource file named Default.aspx.resx in App_LocalResources for localizing server controls in the page.

But for some reason, I need to choose another file, let's say Default-Custom.aspx.resx. To provide some background, I already have Default.aspx.resx but some users need to have different content shown to them, which I am going to put in Default-Custom.aspx.resx.

Is is possible to choose the Resource file used for a TemplateControl in ASP.NET (short of writing a custom ResourceProvider)??

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

烟雨凡馨 2024-11-06 20:51:59

看一下这里:

ResourceManager.GetResourceFileName 方法

此方法使用 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");
    }
}

有关更多信息:

创建自定义资源提供程序

在 BuildManager 和资源处理的幕后

Take a look here:

ResourceManager.GetResourceFileName Method

This method uses CultureInfo 's Name
property as part of the file name for
all cultures other than the invariant
culture. This method does not look in
an assembly's manifest or touch the
disk, and is used only to construct
what a resource file name (suitable
for passing to the ResourceReader
constructor) or a manifest resource
blob name should be.

A derived class can override this
method to look for a different
extension, such as ".ResX", or a
completely different scheme for naming
files.

You can try something like this:

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");
    }
}

For more on this:

Creating a custom Resource Provider

Under the Hood of BuildManager and Resource Handling

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文