【问题标题】:How to Access External Resources from Website Aspx如何从网站 Aspx 访问外部资源
【发布时间】:2010-02-26 02:25:02
【问题描述】:

我当前的解决方案包括几个类库和一个网站。我正在全球化应用程序,我意识到我的资源需要被所有项目访问,而不仅仅是网站,因此将我的资源放在 App_GlobalResources 文件夹中不起作用。

我将我的资源添加到我的一个类库中,现在我试图从我的标记中找出访问资源的最佳方式。当我的资源位于 App_GlobalResources 文件夹中时,我可以使用如下表达式访问它们:

<$ Resources: MyApp.Name %>  for server controls

或者

<%=Resources.MyApp.Name %> for plain text

既然它们位于类库 DLL 中,那么从我的网站 aspx 文件中访问我的资源的最佳方式是什么?

感谢您的帮助!

【问题讨论】:

  • 也许将 ASPX 的项目设置为依赖于类库项目。如果您只是包含 DLL 而不是类库项目本身,请确保您在项目中引用了 DLL。

标签: asp.net vb.net resources globalization


【解决方案1】:

我发现一篇很棒的文章讨论了扩展 Resource-Provider Model。它允许使用表达式来访问外部资源:

默认提供者模型(显式全局资源)的 $Resources 表达式的语法如下。

<%$ Resources: [resourceType], [resourceKey] %>

配置ExternalResourceProviderFactory时,同样的表达式可用于访问外部资源,语法变化如下。

<%$ Resources: [assemblyName]|[resourceType], [resourceKey] %>

例如,要从全局资源类型“CommonTerms”的 CommonResources.dll 程序集中检索资源,您可以使用以下显式表达式。

<asp:Label ID="labGlobalResource" runat="server" Text="<%$ Resources:CommonResources|CommonTerms, Hello %>" ></asp:Label>

【讨论】:

    【解决方案2】:

    我使用一个 Util 类库,除了许多其他有用的类和函数之外,它还包含一个带有公共共享函数的 i18n 类,它根据资源文件的名称和 LCID 返回资源文件中资源的值(字符串)。 我在我的网络项目中添加对该 dll 的引用,并在需要的地方添加一个引用,例如在我编写的标签的代码隐藏文件中:

     MyLabel.Text = i18n.GetResourceString("MyStringName",1033)
    

    你可以找到我使用的方法更详细的描述here 我相信通过那里提供的详细信息,您可以采用或调整我的解决方案。

    【讨论】:

    • 对不起,我不明白。您可以在标记中写: 假设程序集是称为 Util.dll。但是您仍然必须从代码隐藏中调用 MyLabel.DataBind 才能使其工作。所以你不妨直接在onload的代码隐藏中写MyLabel.Text = i18n.GetResourceString("MyStringName",1033)。
    • 顺便说一句,这将在没有代码隐藏的情况下工作:
      再次假设,程序集是Util.dll,在您的项目中引用,i18n 的 GetResourceString 是一个公共共享函数。
    猜你喜欢
    • 2012-02-20
    • 1970-01-01
    • 2016-05-13
    • 2012-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多