我有很多本地资源文件
- /Controls/App_LocalResources/SomeControl.ascx.resx,
- /Pages/App_LocalResources/SomePage.aspx.resx 等
我想添加另一种语言,但我不想遍历所有文件夹并添加 SomeControl.ascx.de.resx 文件,然后必须重新编译整个想法。
我想使用附属程序集并将所有文件嵌入到类似 MyWebPage.de.dll 的文件中
这在 VS2003 版本中对于全局资源是可能的,但我不确定在 VS2008 版本中对于本地资源是否可以做到这一点?
我正在使用以下语法访问资源:
<asp:label id="lblSomething" runat="server" meta:resourcekey="labelFirstName"/>
您的问题并不太清楚您是在寻找 VS2008 的功能还是 ASP.NET 框架的功能。所以我将使用代码解决方案。
您使用的隐式绑定语法使用 ASP.NET 的默认 LocalResourceProvider,它采用资源所在页面的路径来确定要加载的资源。如果您的资源存储在其他地方,并且您仍然想在前面的代码中使用隐式绑定系统,则需要使用您自己的提供程序。听起来很复杂,但其实相当简单。
为此,您需要首先子类化 ResourceProviderFactory
并覆盖两者
IResourceProvider CreateGlobalResourceProvider(string classKey)
IResourceProvider CreateLocalResourceProvider(string virtualPath)
...然后实现您自己的 IResourceProvider,使用 ResourceManager 从卫星程序集中获取资源
public interface IResourceProvider
{
object GetObject(string resourceKey, CultureInfo culture);
IResourceReader ResourceReader { get; }
}
然后,您需要将配置添加到您的 web.config 文件,以让 ASP.NET 知道使用您的 SatelliteResourceProviderFactory 并将您的资源移动到您的外部程序集中,但这应该是您的最佳选择。
可以在这里找到大量文档...在“构建数据库资源提供程序”部分...
http://msdn.microsoft.com/en-us/library/aa905797.aspx#exaspnet20rpm_topic4
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)