ASP.NET页面指令详解
当使用指令时,虽然标准的做法是将指令包括在文件的开头,但是它们可以位于 .aspx 或 .ascx 文件中的任何位置。每个指令都可以包含一个或多个特定于该指令的属性(与值成对出现)。
注意 @ Page 指令只能在 .aspx 文件中使用,而 @ Control 指令只能在 .ascx 文件中使用。
Web 窗体页框架支持以下指令。
ASP.NET中的常用指令
@ Page 定义 ASP.NET 页分析器和编译器使用的页特定属性。只能包含在 .aspx 文件中。
@ Control 定义 ASP.NET 页分析器和编译器使用的控件特定属性。只能包含在 .ascx 文件(用户控件)中。
@ Import 将命名空间显式导入页或用户控件中。
@ Implements 以声明的方式指示页或用户控件实现指定的 .NET Framework 接口。
@ Register 将别名与命名空间及类名关联起来,从而允许用户控件和自定义服务器控件在被包括到请求的页或用户控件时呈现。
@ Assembly 以声明的方式将程序集链接到当前页或用户控件。
@ OutputCache 以声明的方式控制页或用户控件的输出缓存策略。
@ Reference 以声明的方式将页或用户控件链接到当前页或用户控件。
ASP.NET 将不包含显式指令名的任何指令块 (<%@ %>) 都当做 @ Page 指令(用于页)或 @ Control 指令(用于用户控件)处理。
@ Page常见属性
AspCompat
当设为 true 时,允许在单线程单元 (STA) 线程上执行页。这允许页调用 STA 组件,例如用 Microsoft Visual Basic 6.0 开发的组件。将该属性设为 true 还允许页调用 COM+ 1.0 组件,该组件要求可以访问非托管 Active Server Pages (ASP) 内置对象。通过 ObjectContext 对象或 OnStartPage 方法可以访问它们。默认值为 false。
注意 将该属性设为 true 可能导致页的性能降低。有关详细信息,请参见备注部分。
AutoEventWireup
指示页的事件是否自动连网。如果启用事件自动连网,则为 true;否则为 false。默认值为 true。有关更多信息,请参见 Web 服务器控件事件模型。
Buffer
确定是否启用 HTTP 响应缓冲。如果启用页缓冲,则为 true;否则为 false。默认值为 true。
ClassName
指定在请求时将自动进行动态编译的页的类名。该值可以是任何有效的类名,但不应包括命名空间。
ClientTarget
指示 ASP.NET 服务器控件应该为其呈现内容的目标用户代理。该值可以是任何有效的用户代理或别名。
CodeBehind
指定包含与页关联的类的已编译文件的名称。该属性由 Visual Studio .NET Web 窗体设计器使用。设计器从该属性中获取页类的位置,以便创建页类的实例供您设计时使用。例如,如果在 Visual Studio 中创建名为 WebForm1 的 Web 窗体页,对于 Visual Basic,设计器将指定 Codebehind 属性值为 WebForm1.aspx.vb,对于 C# 则为 WebForm1.aspx.cs。该属性不能在运行时使用。
CodePage
指示响应的代码页值。
注意 如果创建 Web 窗体页时使用的代码页不是将运行该页的 Web 服务器上的默认代码页,则必须设置此属性。输入的值应该是在其上创建该页的计算机的代码页。有关代码页的更多信息,请搜索 Microsoft Developers Network (MSDN),网址为 http://microsoft.com/china/msdn。
CompilerOptions
包含用于编译页的编译器选项的字符串。在 C# 和 Visual Basic .NET 中,这是编译器命令行开关的序列。
ContentType
将响应的 HTTP 内容类型定义为标准的 MIME 类型。支持任何有效的 HTTP 内容类型字符串。有关可能值的列表,请在 http://www.microsoft.com/china/technet 上的 MSDN 中搜索 MIME。
Culture
指示页的区域性设置。有关区域性设置和可能的区域性值的信息,请参见 CultureInfo 类。
Debug
指示是否应使用调试符号编译该页。如果应使用调试符号编译该页,则为 true;否则为 false。
Description
提供该页的文本说明。ASP.NET 分析器忽略该值。
EnableSessionState
定义页的会话状态要求。如果启用会话状态,则为 true;如果可以读取但不能更改会话状态,则为 ReadOnly;否则,为 false。默认为 true。这些值是不区分大小写的。有关更多信息,请参见会话状态。
EnableViewState
指示是否为所有页请求维护视图状态。如果维护视图状态,则为 true;否则为 false。默认值为 true。
EnableViewStateMac
指示当页从客户端回发时,ASP.NET 应该对页的视图状态运行计算机身份验证检查 (MAC)。如果应该对视图状态运行 MAC 检查,则为 true;否则为 false。默认值为 false。
注意 视图状态 MAC 是隐藏变量的加密版本,当某页被发送到浏览器时,该页的视图状态永久保留到该变量中。当您将此属性设置为 true 时,将检查加密的视图状态以验证它在客户端未被篡改。
ErrorPage
定义在出现未处理页异常时用于重定向的目标 URL。
Explicit
确定是否使用 Visual Basic Option Explicit 模式来编译页。如果值为 true,则表明启用了 Visual Basic 显式编译选项,且所有变量必须是用 Dim、Private、Public 或 ReDim 语句来声明的;否则值为 false。默认值为 false。
注意 除了 Visual Basic .NET,所有语言都忽略该属性。此外,该选项在 Machine.config 配置文件中被设置为 true。有关更多信息,请参见计算机配置文件。
Inherits
定义供页继承的代码隐藏类。可以是从 Page 类派生的任何类。有关代码隐藏类的信息,请参见 Web 窗体代码模型。
Language
指定在对页中所有内联呈现(<% %> 和 <%= %>)和代码声明块进行编译时使用的语言。值可表示任何 .NET 支持的语言,包括 Visual Basic、C# 或 JScript .NET。
LCID
定义 Web 窗体页的区域设置标识符。
注意 区域设置标识符是一个 32 位值,该值唯一地定义某个区域设置。除非您使用该属性为 Web 窗体页指定不同的区域设置,否则 ASP.NET 使用 Web 服务器默认的区域设置。有关区域设置的详细信息,请搜索位于 http://microsoft.com/china/msdn 上的 MSDN。
ResponseEncoding
指示页内容的响应编码。支持来自 Encoding.GetEncoding 方法的值。
Src
指定在请求页时动态编译的代码隐藏类的源文件名称。您可以选择将页的编程逻辑包含在代码隐藏类中或 .aspx 文件的代码声明块中。
注意 RAD 设计器(如 Visual Studio .NET)不使用该属性。而是会预编译代码隐藏类,然后使用 Inherits 属性。
SmartNavigation
指示页是否支持 Internet Explorer 5.5 或更高版本的智能导航功能。
注意 有关智能导航的详细信息,请参见备注部分。
Strict
指示应使用 Visual Basic Option Strict 模式编译该页。如果启用 Option Strict,则为 true;否则为 false。默认值为 false。
注意 除了 Visual Basic .NET,所有语言都忽略该属性。
Trace
指示是否启用跟踪。如果启用跟踪,则为 true;否则为 false。默认值为 false。有关更多信息,请参见 ASP.NET 跟踪。
TraceMode
指示当启用跟踪时如何为页显示跟踪消息。可能的值是 SortByTime 和 SortByCategory。当启用跟踪时,默认值为 SortByTime。有关跟踪的更多信息,请参见 ASP.NET 跟踪。
Transaction
指示在页上是否支持事务。可能的值包括 Disabled、NotSupported、Supported、Required 和 RequiresNew。默认值为 Disabled。
UICulture
指定用于页的 UI 区域性设置。支持任何有效的 UI 区域性值。
ValidateRequest
指示是否应发生请求验证。如果为 true,请求验证将根据具有潜在危险的值的硬编码列表检查所有输入数据。如果出现匹配情况,将引发 HttpRequestValidationException 类。默认值为 true。
该功能在计算机配置文件 (Machine.config) 中启用。可以在应用程序配置文件 (Web.config) 中或在页上将该属性设置为 false 来禁用该功能。
注意 该功能有助于减少对简单页或 ASP.NET 应用程序进行跨站点脚本攻击的风险。如果应用程序不能正确验证用户输入,则可能会受到多种类型的格式错误的输入的攻击,包括跨站点脚本攻击和 SQL Server 指令注入式攻击。应该仔细地评估应用程序中所有形式的输入,并确保对它们进行了正确地验证和编码,或者确保应用程序在处理数据或将信息发送回客户端之前已退出。除此之外,别无它法。
WarningLevel
指示您想要编译器中止对页进行编译的编译器警告等级。可能的值为 0 到 4
@ Control
定义 ASP.NET 页分析器和编译器使用的用户控件(.ascx 文件)特定的属性。该指令只能用于用户控件。
AutoEventWireup
指示页的事件是否自动连网。如果启用事件自动连网,则为 true;否则为 false。默认值为 true。
ClassName
指定在请求时将自动进行动态编译的页的类名。该值可以是任何有效的类名,但不应包括命名空间。
CompilerOptions
包含用于编译用户控件的编译器选项的字符串。在 C# 和 Visual Basic .NET 中,这是编译器命令行开关的序列。
Debug
指示是否应使用调试符号编译该页。如果应使用调试符号编译该页,则为 true;否则为 false。
Description
提供该页的文本说明。支持任何字符串说明。
EnableViewState
指示是否为所有页请求维护用户控件的视图状态。如果维护视图状态,则为 true;否则为 false。默认值为 true。
Explicit
确定是否使用 Visual Basic Option Explicit 模式来编译页。true 指示启用 Visual Basic 显式编译选项,且所有变量都必须用 Dim、Private、Public 或 ReDim 语句来声明;否则为 false。默认值为 false。
注意 除了 Visual Basic .NET,所有语言都忽略该属性。此外,该选项在 Machine.config 配置文件中被设置为 true。有关更多信息,请参见计算机配置文件。
Inherits
定义供用户控件继承的代码隐藏类。可以是从 UserControl 类派生的任何类。有关代码隐藏类的信息,请参见 Web 窗体代码模型。
Language
指定在对用户控件中的所有内联呈现(<% %> 和 <%= %>)和服务器端脚本块进行编译时使用的语言。值可表示任何 .NET 支持的语言,包括 Visual Basic、C# 或 JScript .NET。
Strict
指示应使用 Visual Basic Option Strict 模式编译该页。如果启用 Option Strict,则为 true;否则为 false。默认值为 false。
注意 除了 Visual Basic .NET,所有语言都忽略该属性。
Src
指定当请求用户控件时要动态编译的代码隐藏类的源文件名称。您可以选择将页的编程逻辑包含在代码隐藏类中或 .ascx 文件的代码声明块中。
注意 RAD 设计器(如 Visual Studio .NET)不使用该属性。而是会预编译代码隐藏类,然后使用 Inherits 属性。
WarningLevel
指示您想要编译器在哪个编译器警告级别中止为用户控件进行编译。可能的值为 0 到 4。
@ Import
将命名空间显式导入到页中,使所导入的命名空间的所有类和接口可用于该页。导入的命名空间可以是 .NET Framework 类库或用户定义的命名空间的一部分。
namespace
要导入页的命名空间的名称。这可以包括任何包含在 .NET Framework 中的命名空间或自定义命名空间。
@ Implements
示当前页或用户控件实现指定的 .NET Framework 接口。
interface
要在页或用户控件中实现的接口。
<%@ Implements interface="ValidInterfaceName" %>
@ Register
将别名与命名空间及类名关联起来,以便在自定义服务器控件语法中使用简明的表示法。
想关属性
tagprefix
与命名空间关联的别名。
tagname
与类关联的别名。
Namespace
与 tagprefix 关联的命名空间。
Src
与 tagprefix:tagname 对关联的声明性用户控件文件的位置(相对的或绝对的)。
Assembly
与 tagprefix 关联的命名空间所驻留的程序集。
注意 程序集名称不包括文件扩展名。
<%@ Register tagprefix="tagprefix" Namespace="namespace" Assembly="assembly" %><%@ Register tagprefix="tagprefix" Tagname="tagname" Src="pathname" %>
@ Assembly
在编译过程中将程序集链接到当前页,以使程序集的所有类和接口都可用在该页上。
想关属性
Name
表示要链接到页的程序集名称的字符串。
注意 程序集名称不包括文件扩展名。
Src
要动态编译和链接的源文件的路径。
注意 不能在同一个 @ Assembly 指令中包含 Name 和 Src 属性。如果您要使用这两个属性,页上必须包含多个指令。
<%@ Assembly Name="assemblyname" %>
<%@ Assembly Src="pathname" %>
@ OutputCache
以声明的方式控制 ASP.NET 页或页中包含的用户控件的输出缓存策略
属性:
Duration
页或用户控件进行缓存的时间(以秒计)。在页或用户控件上设置该属性为来自对象的 HTTP 响应建立了一个过期策略,并将自动缓存页或用户控件输出。
注意 该属性是必需的。如果未包含该属性,将出现分析器错误。
Location
OutputCacheLocation 枚举值之一。默认值为 Any。
警告 包含在用户控件(.ascx 文件)中的 @ OutputCache 指令不支持此属性。
Shared
一个布尔值,确定用户控件输出是否可以由多个页共享。默认值为 false。有关详细信息,请参见备注部分。
注意 包含在 ASP.NET 页(.aspx 文件)中的 @ OutputCache 指令不支持此属性。
VaryByCustom
表示自定义输出缓存要求的任意文本。如果赋予该属性的值是 browser,缓存将随浏览器名称和主要版本信息的不同而不同。如果输入了自定义字符串,您必须在应用程序的 Global.asax 文件中重写 HttpApplication.GetVaryByCustomString 方法。
VaryByHeader
分号分隔的 HTTP 标头列表,用于使输出缓存发生变化。当将该属性设为多标头时,对于每个指定的标头,输出缓存都包含一个请求文档的不同版本。
注意 设置 VaryByHeader 属性在所有 HTTP 1.1 缓存中启用缓存项,而不仅限于 ASP.NET 缓存。用户控件中的 @ OutputCache 指令不支持此属性。
VaryByParam
分号分隔的字符串列表,用于使输出缓存发生变化。默认情况下,这些字符串与用 GET 方法属性发送的查询字符串值对应,或与用 POST 方法发送的参数对应。当将该属性设置为多参数时,对于每个指定的参数,输出缓存都包含一个请求文档的不同版本。可能的值包括 none、* 和任何有效的查询字符串或 POST 参数名称。
警告 在输出缓存 ASP.NET 页时,该属性是必需的。它对于用户控件也是必需的,除非已经在用户控件的 @ OutputCache 指令中包含了 VaryByControl 属性。如果没有包含它,则发生分析器错误。如果您不想使缓存内容随任何指定参数发生变化,请将该值设为 none。如果要使输出缓存根据所有参数值发生变化,请将属性设置为 *。
VaryByControl
一个分号分隔的字符串列表,用于更改用户控件的输出缓存。这些字符串代表在用户控件中声明的 ASP.NET 服务器控件的 ID 属性值。
注意 除非已经包含了 VaryByParam 属性,否则在用户控件 @ OutputCache 指令中,该属性是必需的。ASP.NET 页中的 @ OutputCache 指令不支持该属性。
<%@ OutputCache Duration="100" VaryByParam="none" %>
@ Reference
以声明的方式指示,应该根据在其中声明此指令的页对另一个用户控件或页源文件进行动态编译和链接。
属性
Page
Web 窗体页,ASP.NET 应该在运行时根据它动态编译和链接当前页。
Control
用户控件,ASP.NET 应该在运行时根据它动态编译和链接当前页。
<%@ Reference page | control="pathtofile" %>
ASP.NET@指令
指 令 |
作 用 |
语 句 |
@ Page |
定义ASP.NET页分析器和编译器使用的页特定(.aspx文件)属性 |
<%@ Page attribute=”value” [attribute=”value”…]%> |
@ Conreol |
定义ASP.NET页分析器和编译器使用的用户控件(.ascx文件)特定的属性。该指令只能用户用户控件 |
<%@ Control attribute=”value” [attribute=”value”…]%> |
@ Import |
将命名空间显示导入到页中,使所导入的命名空间的所有类和接口可用户该页。导入的命名空间可以是.NET Framework类库或用户定义的命名空间的一部分 |
<%@ Import namespace=”value” %> |
@ Implements |
提示当前页或用户控件实现制定的.NET Framework接口 |
<%@ Implements interface=”ValidInterfaceName” %> |
@ Reference |
以声明的方式指示,应该根据在其中声明此指令的页对另一个用户控件或页源文件进行动态编译和链接 |
<%@ Reference page | control=”pathtofile” %> |
@ Output Cache |
以声明的方式空间ASP.NET页或页中包含的用户控件的输出缓存策略 |
<%@ Output Cache Duration=”#ofseconds” Location=”Any | Client | Downstream | Server | None” Shared=”True |False” VaryByControl=”controlname” VaryByCustom=”browser | customstring” VaryByHeader=”headers” VaryByParam=”parametername” %> |
@ Assembly |
在编译过程中将程序集链接到当前页,以使程序集的所有类和接口都可用在该页上 |
<%@ Assembly Name=”assemblyname” %> <%@ Assembly Src=”pathname” %> |
@ Register |
将别名与命名空间以及类名关联起来,以便在自定义服务器控件语法中使用简明的表示法 |
<%@ Register tagprefix=” tagprefix” Namespace=”namepace” Assembly=”assembly” %> |