當使用指令時,雖然標準的做法是將指令包括在檔案的開頭,但是它們可以位於 .aspx 或 .ascx 檔案中的任何位置。每個指令都可以包含一個或多個特定於該指令的屬性(與值成對出現)。
注意 @ Page 指令只能在 .aspx 檔案中使用,而 @ Control 指令只能在 .ascx 檔案中使用。
Web Form頁架構支援以下指令。
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 時,允許在單一執行緒 Apartment (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 Form設計器使用。設計器從該屬性中擷取頁類的位置,以便建立頁類的執行個體供您設計時使用。例如,如果在 Visual Studio 中建立名為 WebForm1 的 Web Form頁,對於 Visual Basic,設計器將指定 Codebehind 屬性值為 WebForm1.aspx.vb,對於 C# 則為 WebForm1.aspx.cs。該屬性不能在運行時使用。
CodePage
指示響應的字碼頁值。
注意 如果建立 Web Form頁時使用的字碼頁不是將運行該頁的 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 Form代碼模型。
Language
指定在對頁中所有內聯呈現(<% %> 和 <%= %>)和代碼聲明塊進行編譯時間使用的語言。值可表示任何 .NET 支援的語言,包括 Visual Basic、C# 或 JScript .NET。
LCID
定義 Web Form頁的地區設定識別碼。
注意 地區設定識別碼是一個 32 位值,該值唯一地定義某個地區設定。除非您使用該屬性為 Web Form頁指定不同的地區設定,否則 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 Form代碼模型。
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 Form頁,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” %> <%@ Register tagprefix=” tagprefix” Tagname=”tagname” Src=”pathname” %> |