2011-04-07 43 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