📄 新建 文本文档.txt
字号:
幸运的是,对于ASP.NET 2.0,附属程序集的时代已经一去不复返了。更准确地说,附属程序集仍然存在,但是由于App_GlobalResources保留文件夹,对开发人员来说它们已经成为过去的事情。
该文件夹中的任何定位的.resx文件自动地被编译成附属程序 集。.resx文件的名称包含文化信息,以帮助ASP.NET运行库环境的程序集生成。如下文件,resources.resx, resources.it.resx, resources.fr.resx,生成中性程序集以及适合于意大利(Italian)和法国(French)文化的附属程序集。如果没有要求特定文 化,则中性程序集是默认的文化资源。
App_GlobalResources文件夹中的资源文件是应用程序的全局资源,因而可以从任何页面中引用它。和ASP.NET 1.x相比资源读取结果也极大地简化了:
<asp:Label Runat="server" Text="<%$ Resources:ResxFile, MyResName %>" />
可以使用最新的称为Resources的$-表达式以声明的方式绑定全局资源(第5章将详细介绍$-表达式)。该表达式包括两个参数:.resx资源文件的名称(没有扩展名),以及要检索的资源的名称。以编程的方式访问资源,请使用如下代码:
HttpContext.GetGlobalResourceObject(resxFile, MyResName)
这两个参数都是字符串,并且与$-表达式中的参数具有相同的作用。此外,$-表达式Resources的实现在内部使用GetGlobalResourceObject。
6. App_LocalResources文件夹
App_LocalResources文件夹位于包含一些ASP.NET页面的文件夹下的一个子目录。该文件夹可以使用位于 目录结构中高一级目录中的页面命名的.resx文件进行填充。假定父文件夹包含test.aspx,则可以在App_LocalResources文件夹 中找到一些可用的资源文件如下:test.aspx.resx、test.aspx.it.resx和test.aspx.fr.resx。显然,上述文 件中存储的资源仅对test.aspx页面有影响,因而只能在链接的页面中看见它们(可以使用它们)。
如何访问一个页面特有的资源呢?对于编程访问,可使用如下代码:
HttpContext.GetLocalResourceObject("/ProAspNet20/ResPage.aspx",
"PageResource1.Title")
第1个参数指出页面虚拟路径;第2个参数是资源名称。对于声明式访问,使用meta:ResourceKey属性。例如,
<asp:Button Runat="server" meta:resourcekey="ButtonResource1" />
该声明将一个惟一的资源键与特定按钮实例关联。局部文件.resx包含prefix.name形式的条目,其中prefix 是资源键,而name是绑定控件上的属性名。为了赋予按钮一个本地化标题(Text属性),只要在资源文件中创建一个 ButtonResource1.Text条目即可。
局部和全局资源文件夹中存在的资源文件都被编译,以创建附属程序集的类。最后的结果是开发人员创建.resx文件,并测试该页面。而ASP.NET编译机制会完成其余工作。
7. App_Themes文件夹
App_Themes文件夹为ASP.NET控件定义主题。主题包含在App_Themes文件夹下的一个文件夹。根据定义,一个主题是一组带有样式信息的文件。主题文件夹中的文件内容被编译,以生成一个类,而该类被页面调用以编程的方式设置主题化控件的样式。
App_Themes文件夹列出应用程序的本地主题。 应用程序还可以继承如下文件夹中定义的全局主题:
%WINDOWS%\Microsoft.NET\Framework\[version]\ASP.NETClientFiles\Themes
从编译的角度看,全局主题和局部主题没有区别。如果一个给定名称的主题,既存在应用程序的本地主题,又存在服务器机器的全局主题,则本地主题优先适用。
8. App_WebReferences文件夹
在Visual Studio .NET 2003中,一个需要访问Web服务的ASP.NET应用程序,将通过“添加Web引用”对话框获得相应的.wsdl文件。Web服务的WSDL(Web Service Description Language)文档,对于从页面使用Web服务是不够的。ASP.NET页面最终是一个托管类,并且需要与另一个托管类通信。因此,Web服务被一个 代理类所包装。该代理类是由Visual Studio使用命令行工具wsdl.exe的服务创建的。该代理类尽量包含与Web服务商的Web方法一样多的方法,并且它结合了Web服务的公共接口 定义的任何自定义的数据类型。
这个操作不需要开发人员付出很大的代价。然而,开发人员显然要依赖于Visual Studio来生成代理类。如果能够直接把.wsdl文件放在应用程序的目录树的某个地方,并让ASP.NET处理其余的任务,这样不是更容易、更简单 吗?这正好是App_WebReferences文件夹要做的事情。
它识别那些用来描述所绑定的Web服务的.wsdl文件,并生成运行时代理类,以便ASP.NET页面能够以类型安全的方式 放置对Web服务的调用。App_WebReferences文件夹可以包含子文件夹。子文件夹的名称驱动最后所得到的代理类的命名空间,而WSDL文件 定义类名。例如,samples.wsdl文件和ProsAspNet20子文件夹将创建一个称为ProAspNet20.Samples的代理类。该动 态创建的程序集称为App_WebReferences.xxx.dll,其中xxx是一个随机的字符序列。
文件夹名称
文件类型
注 释
Bin
.dll
包含应用程序所需的任何预生成的程序集
App_Browsers
.browser
包含应用程序特有的浏览器定义文件,ASP.NET用它来识别各浏览器及确定它们的功能
App_Code
.cs、.vb、.xsd、自定义的文件类型
包含作为应用程序的一部分编译的类的源文件。当页面被请求时,ASP.NET编译该文件夹中的代码。该文件夹中的代码在应用程序中自动地被引用
App_Data
.mdb、.mdf、.xml
包含Microsoft Office Access和SQL Express文件以及XML文件或其他数据存储
App_GlobalResources
.resx
包含在本地化应用程序中以编程方式使用的资源文件
App_LocalResources
.resx
包含页面范围的资源文件
App_Themes
.skin、.CSS、.xsl、附属文件
包含一组定义ASP.NET页面和控件外观的文件
App_WebReferences
.wsdl
包含用以生成代理类的WSDL文件,以及与在应用程序中使用Web服务有关的其他文件
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -