gpt4 book ai didi

asp.net - 我可以在卫星程序集中合并本地资源吗?

转载 作者:行者123 更新时间:2023-12-02 21:24:42 24 4
gpt4 key购买 nike

我有很多本地资源文件

  • /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 框架的功能。所以我将采用代码解决方案。

您使用的隐式绑定(bind)语法使用 ASP.NET 的默认 LocalResourceProvider,它采用资源所在页面的路径来确定要加载的资源。如果您的资源存储在其他地方,并且您仍然想在前面的代码中使用隐式绑定(bind)系统,则需要使用您自己的提供程序。听起来很复杂,但相当简单。

为此,您需要首先子类化 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

关于asp.net - 我可以在卫星程序集中合并本地资源吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1643131/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com