快速业务通道

扩展ASP.NET 2.0资源提供程序模型(2)

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-21
API 访问本地和全局资源。资源提供程序为本地和全局资源类型而创建。

在示例代码中,DBResourceProviderFactory 为两个路径均创建了 DBResourceProvider。这是因为本地和全局资源通过同一方式访问。DBResourceProviderFactory 的代码显示在代码清单 2 中。

代码清单 2. DBResourceProviderFactory 是支持数据库资源的 ResourceProviderFactory 的自定义实现。

using System;
using System.Web.Compilation;
using System.Web;
using System.Globalization;
namespace CustomResourceProviders
{
 public class DBResourceProviderFactory : ResourceProviderFactory
 {
public override IResourceProvider CreateGlobalResourceProvider
(string classKey)
{
 return new DBResourceProvider(classKey);
}
public override IResourceProvider CreateLocalResourceProvider
(string virtualPath)
{
 string classKey = virtualPath;
 if (!string.IsNullOrEmpty(virtualPath))
 {
virtualPath = virtualPath.Remove(0, 1);
classKey = virtualPath.Remove(0, virtualPath.IndexOf(''/'') + 1);
 }
 return new DBResourceProvider(classKey);
}
 }
}

对于隐式表达式或调用本地资源的显式表达式,将调用 GetLocalResourceProvider() 来创建页面的提供程序。以下是隐式表达式和使用本地资源的显式表达式的示例 — 已在示例代码的 Expressions.aspx 页面中定义。

<asp:Label ID="labHelloLocal" runat="server" Text="HelloDefault" meta:resourcekey="labHelloLocalResource1" ></asp:Label>
<asp:Label ID="Label1" runat="server" Text="<%$ Resources:labHelloLocalResource1.Text %>" ></asp:Label>

GetLocalResourceProvider() 使用一个单独的参数,该参数为包含应用程序目录的页面的虚拟路径。上面的两个表达式将传递“/LocalizedWebSite/Expressions.aspx”给此参数。从图 5 中,您可以看出本地资源使用代表页面相对路径的 resourceType 进行存储,其中不包含应用程序目录。这样,在创建 DBResourceProvider 示例之前,GetLocalResourceProvider() 会将应用程序目录从路径中去掉。

对于请求全局资源的显式表达式,会将在表达式中直接指定的资源类型传递至 GetGlobalResourceProvider()。请注意下面的显式表达式(同样来自代码示例中的 Expressions.aspx 页面)。

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

本例中的资源类型为 CommonTerms,因此调用 GetGlobalResourceProvider() 来将 CommonTerms 作为参数传递。为此类型创建了一个 DBResourceProvider 实例。

对于任何给定的资源类型,仅创建一个 DBResourceProvider 实例。实例创建之后会被缓存以备将来之用。因此,只有缓存中尚不存在提供程序实例时才会调用工厂。创建和缓存提供程序的过程封装在用于访问资源的本地化 API 中。

ResourceProviderFactory 配置

运行时将使用 ResxResourceProviderFactory,除非在配置中指定一个替代的 ResourceProviderFactory 类型。Web 配置文件的 <globalization> 部分有一个名为 resourceProviderFactoryType 的属性。此处,您指定了应使用 ResourceProviderFactory 类型。要配置 DBResourceProviderFactory,您要添加以下设置。

<system.web>
...other settings
 <globalization uiCulture="auto" culture="auto" resourceProviderFactor

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号