ASP.NET指令

ASP.NET 2.0

ASP.NET指令在每个ASP.NET页面中都有。使用这些指令可以控制ASP.NET页面的行为。
在ASP.NET页面或用户控件中有11个指令。无论页面是使用后台编码模型还是内置编码模型,都可以在应用程序中使用这些指令。
基本上,这些指令都是编译器编译页面时使用的命令。把指令合并到页面中是很简单的。指令的格式如下:
<%@ [Directive] [Attribute=Value] %>
在上面的代码行中,指令以<%@开头,以%>结束。最好把这些指令放在页面或控件的顶部,因为开发人员传统上都把指令放在那里(但如果指令位于其他地方,页面仍能编译)。当然,也可以把多个属性添加到指令语句中,如下所示:
<%@ [Directive] [Attribute=Value] [Attribute=Value] %>
表3-3描述了ASP.NET 2.0中的指令:
表 3-3
指令
说明
Assembly
把程序集链接到与它相关的页面或用户控件上
Control
用户控件(.ascx)使用的指令,其含义与Page指令相当
Implements
实现指定的.NET Framework接口
Import
在页面或用户控件中导入指定的命名空间
Master
允许指定master页面——在解析或编译页面时使用的特定属性和值。这个指令只能与master页面(.master)一起使用
MasterType
把类名与页面关联起来,获得包含在特定master页面中的强类型化的引用或成员
OutputCache
控制页面或用户控件的输出高速缓存策略
Page
允许指定在解析或编译页面时使用的页面特定属性和值。这个指令只能与ASP.NET页面(.aspx)一起使用
PreviousPageType
允许ASP.NET页面处理应用程序中另一个页面的回送信息
Reference
把页面或用户控件链接到当前的页面或用户控件上
Register
给命名空间和类名关联上别名,作为定制服务器控件语法中的记号
下面几节简要介绍这些指令。
@Page指令允许为ASP.NET页面(.aspx)指定解析和编译页面时使用的属性和值。这是最常用的指令。ASP.NET页面是ASP.NET的一个重要部分,所以它有许多属性。表3-4总结了@Page指令的可用属性。
表3-4
属性
说明
AspCompat
若其值为True,就允许页面在单线程的单元中执行,这个属性的默认设置是False。
Async
指定ASP.NET页面是同步或异步处理
AutoEventWireUp
设置为True时,指定页面事件自动触发。这个属性的默认设置是True
Buffer
设置为True时,支持HTTP响应缓存。这个属性的默认设置是True
ClassName
指定编译页面时绑定到页面上的类名
CodeFile
引用与页面相关的后台编码文件
CodePage
指定响应的代码页面值
CompilerOptions
编译器字符串,指定页面的编译选项
CompileWith
包含一个String值,指向所使用的后台编码文件
ContentType
把响应的HTTP内容类型定义为标准MIME类型
Culture
指定页面的文化设置。ASP.NET 2.0允许把Culture 属性的值设置为Auto ,支持自动检测需要的文化
Debug
设置为True时,用调试符号编译页面
Description
提供页面的文本描述。ASP.NET解析器忽略这个属性及其值
EnableSessionState
设置为True时,支持页面的会话状态,其默认设置是True
EnableTheming
设置为True时,页面可以使用主题。其默认设置是False.
EnableViewState
设置为True时,在页面中维护视图状态,其默认设置是True
EnableViewStateMac
设置为True时,当用户回送页面时,页面会在视图状态上进行机器范围内的身份验证,其默认设置是False
ErrorPage
为所有未处理的页面异常指定用于发送信息的URL
Explicit
设置为True时,支持Visual Basic的Explicit选项。其默认设置是False
Language
定义内置显示和脚本块所使用的语言
LCID
为Web Form的页面定义本地标识符
LinePragmas
Boolean值,指定得到的程序集是否使用行附注
MasterPageFile
带一个 String 值,指向页面所使用的master页面的地址。这个属性在内容页面中使用
MaintainScrollPositionOn
Postback
带一个Boolean 值,表示在回送页面时,页面是位于相同的滚动位置上,还是在最高的位置上重新生成页面
PersonalizationProvider
带一个 String 值,指定把个性化信息应用于页面时所使用的个性化提供程序名
ResponseEncoding
指定页面内容的响应编码

(续表)

属性
说明
SmartNavigation
指定是否为功能更丰富的浏览器激活ASP.NET智能导航功能。它把回送信息返回到页面的当前位置,其默认值是False
Src
指向类的源文件,用于所显示的页面的后台编码
Strict
设置为True时,使用Visual Basic Strict模式编译页面,其默认值是False
Theme
使用ASP.NET 2.0的主题功能,把指定的主题应用于页面
Title
应用页面的标题。这个属性主要用于必须应用页面标题的内容页面,而不是应用master页面中指定内容的页面
Trace
设置为True时,激活页面跟踪,其默认值是False
TraceMode
指定激活跟踪功能时如何显示跟踪消息。这个属性的设置可以是SortByTime 或SortByCategory,默认设置是SortByTime
Transaction
指定页面上是否支持事务处理。这个属性的设置可以是NotSupported、Supported、Required和RequiresNew,默认设置是NotSupported
UICulture
UICulture 属性的值指定ASP.NET 页面使用什么UI Culture。 ASP.NET 2.0允许给UICulture属性使用Auto值,支持自动检测UICulture
ValidateRequest
设置为True时,根据一组潜在危险的值检查窗体输入值,帮助防止Web应用程序受到有害的攻击,例如JavaScript攻击。默认值是True
WarningLevel
指定停止编译页面时的编译警告级别,其值可以是0到4

2.@Control

@Control 指令类似于@Page指令,但 @Control指令是在建立ASP.NET用户控件时使用的。@Control指令允许定义用户控件要继承的属性。这些属性值会在解析和编译页面时赋予 用户控件。@Control指令的可用属性比@Page指令少,但其中有许多都可以在建立用户控件时进行需要的修改。表3-6详细介绍了这些可用属性。

表3-6

属性

说明

AutoEventWireUp

设置为True时,指定用户控件的事件是否自动触发。默认设置为True

ClassName

指定编译页面时绑定到用户控件上的类名

CodeFile

引用与用户控件相关的后台编码文件

CompilerOptions

编译字符串,表示用户控件的编译选项

CompileWith

带一个String值,指向用于用户控件的后台编码文件

Debug

设置为True时,用调试符号编译用户控件

(续表)

属性

说明

Description

提供用户控件的文本描述。ASP.NET 解析器会忽略这个属性及其值

EnableTheming

设置为True时,表示用户控件可以使用主题功能。其默认设置是False

EnableViewState

设置为True时,维护用户控件的视图状态。其默认设置是True

Explicit

设置为True时,表示激活Visual Basic Explicit 选项。其默认设置是False

Inherits

指定用户控件要继承的CodeBehind类

Language

定义内置显示和脚本块使用的语言

LinePragmas

Boolean值,指定得到的程序集是否使用行附注

Src

指向类的源文件,用于要显示的用户控件的后台编码

Strict

设置为True时,使用Visual Basic Strict模式编译用户控件。其默认设置是False

WarningLevel

指定停止编译页面时的编译警告级别,其值可以是0到4

@Control指令用于ASP.NET用户控件。

3. @Import

@Import指令允许指定要导入到ASP.NET页面或用户控件中的命名空间。导入了命名空间后,该命名空间中的所有类和接口就可以在页面和用户控件中使用了。这个指令只支持一个属性Namespace。
Namespace属性带一个String值,它指定要导入的命名空间。@Import指令不能包含多个属性/值对。所以,必须把多个命名空间导入指令放在多行代码上,如下所示:
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
应 用程序已经引用了几个程序集,查看C:/ Windows/Microsoft.NET/Framework/v2.0 xxxxx /CONFIG中的web.config.comments文件,就可以找到这些已导入命名空间的列表。这个程序集列表从< compilation>元素的<assemblies>子元素中引用。Web.config.comments文件中的设置如下所 示:
<assemblies>
   <add assembly="mscorlib" />
   <add assembly="System, Version=2.0.0.0, Culture=neutral,
    PublicKeyToken=b77a5c561934e089" />
   <add assembly="System.Web, Version=2.0.0.0, Culture=neutral,
    PublicKeyToken=b03f5f7f11d50a3a" />
   <add assembly="System.Data, Version=2.0.0.0, Culture=neutral,
    PublicKeyToken=b77a5c561934e089" />
   <add assembly="System.Web.Services, Version=2.0.0.0, Culture=neutral,
    PublicKeyToken=b03f5f7f11d50a3a" />
   <add assembly="System.Xml, Version=2.0.0.0, Culture=neutral,
    PublicKeyToken=b77a5c561934e089" />
   <add assembly="System.Drawing, Version=2.0.0.0, Culture=neutral,
    PublicKeyToken=b03f5f7f11d50a3a" />
   <add assembly="System.EnterpriseServices, Version=2.0.0.0, Culture=neutral,
    PublicKeyToken=b03f5f7f11d50a3a" />
   <add assembly="System.Web.Mobile, Version=2.0.0.0, Culture=neutral,
    PublicKeyToken=b03f5f7f11d50a3a" />
   <add assembly="*" />
</assemblies>
web.config.comments 文件中有这个引用,所以这些程序集不需要像ASP.NET 1.0/1.1那样在References文件夹中引用。可以添加或删除在这个列表中引用的程序集。例如,如果服务器上的每个应用程序都引用了一个定制程 序集,就可以在其他程序集的下面添加对定制程序集的类似引用。注意还可以通过应用程序的web.config文件完成这个任务。
尽管程序集已引用,仍必须在页面中导入这些程序集的命名空间。web.config.comments文件包含自动导入到应用程序的页面中的命名空间列表,这是通过<pages>元素的<namespaces>子元素指定的:
<namespaces>
   <add namespace="System" />
   <add namespace="System.Collections" />
   <add namespace="System.Collections.Specialized" />
   <add namespace="System.Configuration" />
   <add namespace="System.Text" />
   <add namespace="System.Text.RegularExpressions" />
   <add namespace="System.Web" />
   <add namespace="System.Web.Caching" />
   <add namespace="System.Web.SessionState" />
   <add namespace="System.Web.Security" />
   <add namespace="System.Web.Profile" />
   <add namespace="System.Web.UI" />
   <add namespace="System.Web.UI.Imaging" />
   <add namespace="System.Web.UI.WebControls" />
   <add namespace="System.Web.UI.WebControls.WebParts" />
   <add namespace="System.Web.UI.HtmlControls" />
</namespaces>
从这个XML列表中可以看出,每个ASP.NET页面都导入了许多命名空间。可以在web.config.comments文件中自由修改这个列表,甚至可以在应用程序的web.config文件中包含类似的命名空间列表。
把 命名空间导入到ASP.NET页面或用户控件,使用类时就不必完全限定类名。例如,在ASP.NET页面中导入System.Data.OleDB命名空 间,就可以使用单个类名来引用这个命名空间中的类(即使用OLEDBConnection,而不是 System.Data.OleDB.OLEDBConnection)。

4.@Implements
@Implements指令允许ASP.NET页面实现特定的.NET Framework接口。这个指令只支持一个Interface属性。
Interface属性直接指定了.NET Framework接口。ASP.NET页面或用户控件实现一个接口时,就可以直接访问其中的所有事件、方法和属性。
下面是@Implements指令的一个例子:

<%@ Implements Interface="System.Web.UI.IValidator" %>

 5. @Register

 

@Register 指令把别名与命名空间和类名关联起来,作为定制服务器控件语法中的记号。把一个用户控件拖放到.aspx页面上时,就使用了@Register指令。把用 户控件拖放到.aspx页面上,Visual Studio 2005就会在页面的顶部创建一个@Register指令。这样就在页面上注册了用户控件,该控件就可以通过特定的名称在.aspx页面上访问了。

@Register指令支持5个属性,如表3-7所示。

表3-7

属性

说明

Assembly

与TagPrefix关联的程序集

Namespace

与TagPrefix关联的命名空间

Src

用户控件的位置

TagName

与类名关联的别名

TagPrefix

与命名空间关联的别名

下面是使用@Register指令把用户控件导入ASP.NET页面的一个例子:

<%@ Register TagPrefix="MyTag" Namespace="MyName:MyNamespace" Assembly="MyAssembly" %>

 

 

6.@Assembly

@Assembly指令在编译时把程序集(.NET应用程序的构建块)关联到ASP.NET页面或用户控件上,使该程序集中的所有类和接口都可用于页面。这个指令支持两个属性Name和Src。

●Name:允许指定用于关联页面文件的程序集名称。程序集名称应只包含文件名,不包含文件的扩展名。例如,如果文件是MyAssembly.vb,Name属性值应是MyAssembly。

●Src:允许指定编译时使用的程序集文件源。

下面是使用@Assembly指令的一些例子:

<%@ Assembly Name="MyAssembly" %>

<%@ Assembly Src="MyAssembly.vb" %>

7.@PreviousPageType

这个指令用于指定跨页面的传送过程起始于哪个页面。在ASP.NET页面之间的跨页面传送过程详见后面的“跨页面传送”一节和第19章。

@PreviousPageType指令是一个新指令,用于处理ASP.NET 2.0提供的跨页面传送新功能。这个简单的指令只包含两个属性TypeName和VirtualPath:

●TypeName:设置回送时的派生类名。

●VirtualPath:设置回送时所传送页面的地址。

8.@MasterType

@MasterType指令把一个类名关联到ASP.NET页面上,以获得特定master页面中包含的强类型化引用或成员。这个指令支持两个属性:

●TypeName:设置从中获得强类型化的引用或成员的派生类名。

●VirtualPath:设置从中检索这些强类型化的引用或成员的页面地址。

使用@MasterType指令的细节请参阅第8章。下面是它的一个例子:

<%@ MasterType VirtualPath="~/Wrox.master" %>

9.@OutputCache

@OutputCache指令控制ASP.NET页面或用户控件的输出高速缓存策略。这个指令支持10个属性,如表3-8所示。

表3-8

属性

说明

CacheProfile

允许使用集中式方法管理应用程序的高速缓存配置。使用CacheProfile属性可指定在web.config文件中详细说明的高速缓存配置名

DiskCacheable

指定高速缓存是否能存储在磁盘上

Duration

ASP.NET 页面或用户控件高速缓存的持续时间,单位是秒

Location

位置枚举值,默认为Any。它只对.aspx页面有效,不能用于用户控件(.ascx)。其他值有Client、Downstream、None、Server和ServerAndClient

NoStore

指定是否随页面发送没有存储的标题

SqlDependency

支持页面使用SQL Server高速缓存失效功能,这是ASP.NET 2.0的一个新功能

VaryByControl

用分号分隔开的字符串列表,用于改变用户控件的输出高速缓存

VaryByCustom

一个字符串,指定定制的输出高速缓存需求

VaryByHeader

用分号分隔开的HTTP标题列表,用于改变输出高速缓存

VaryByParam

用分号分隔开的字符串列表,用于改变输出高速缓存

下面是使用@OutputCache指令的一个例子:

<%@ OutputCache Duration="180" VaryByParam="None" %>

Duration属性指定这个页面存储在系统高速缓存中的时间(秒)。

10.@Reference

@Reference指令声明,另一个ASP.NET页面或用户控件应与当前活动的页面或控件一起编译。这个指令支持两个属性:

●TypeName:设置从中引用活动页面的派生类名。

●VirtualPath:设置从中引用活动页面的页面或用户控件地址。

下面是使用@Reference指令的一个例子:

<%@ Reference VirtualPath="~/MyControl.ascx" %>

11.@Master

 

@Master 指令非常类似于@Page指令,但@Master指令用于master页面(.master)。在使用@Master指令时,要指定和站点上的内容页面一 起使用的模板页面的属性。内容页面(使用@Page指令建立)可以继承master页面上的所有master内容(在master页面上使用 @Master指令定义的内容)。尽管这两个指令是类似的,但@Master指令的属性比@Page指令少。@Master指令的可用属性如表3-5所 示。

表  3-5

属    性

说    明

AutoEventWireUp

设置为True时,指定master页面的事件是否自动触发。默认设置为True

ClassName

指定编译页面时绑定到master页面上的类名

CodeFile

引用与页面相关的后台编码文件

(续表)  

属    性

说    明

CompilerOptions

编译字符串,表示master页面的编译选项

CompileWith

带一个String值,指向用于master页面的后台编码文件

Debug

设置为True时,用调试符号编译master页面

Description

提供master页面的文本描述。ASP.NET 解析器会忽略这个属性及其值

EnableTheming

设置为True时,表示master页面可以使用主题功能。其默认设置是False

EnableViewState

设置为True时,维护master页面的视图状态。其默认设置是True

Explicit

设置为True时,表示激活Visual Basic Explicit 选项。其默认设置是False

Inherits

指定master页面要继承的CodeBehind类

Language

定义内置显示和脚本块使用的语言

LinePragmas

Boolean值,指定得到的程序集是否使用行附注

MasterPageFile

带一个String值,指向master 页面所使用的master页面的地址。master页面可以使用另一个master页面,创建嵌套的master页面

Src

指向类的源文件,用于要显示的master页面的后台编码

Strict

设置为True时,使用Visual Basic Strict模式编译master页面。其默认设置是False

WarningLevel

指定停止编译页面时的编译警告级别,其值可以是0到4

下面是使用@Master指令的一个例子:

<%@ Master Language="VB" CodeFile="MasterPage1.master.vb" AutoEventWireup="false" Inherits="MasterPage" %>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值