天天看點

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 給命名空間和類名關聯上别名,作為定制伺服器控件文法中的記号

下面幾節簡要介紹這些指令。

1.@Page

@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

設定為True時,指定使用者控件的事件是否自動觸發。預設設定為True
指定編譯頁面時綁定到使用者控件上的類名
引用與使用者控件相關的背景編碼檔案
編譯字元串,表示使用者控件的編譯選項
帶一個String值,指向用于使用者控件的背景編碼檔案
設定為True時,用調試符号編譯使用者控件
提供使用者控件的文本描述。ASP.NET 解析器會忽略這個屬性及其值
設定為True時,表示使用者控件可以使用主題功能。其預設設定是False
設定為True時,維護使用者控件的視圖狀态。其預設設定是True
設定為True時,表示激活Visual Basic Explicit 選項。其預設設定是False
Inherits 指定使用者控件要繼承的CodeBehind類
定義内置顯示和腳本塊使用的語言
指向類的源檔案,用于要顯示的使用者控件的背景編碼
設定為True時,使用Visual Basic Strict模式編譯使用者控件。其預設設定是False

@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,

   <add assembly="System.Web.Services, Version=2.0.0.0, Culture=neutral,

   <add assembly="System.Xml, Version=2.0.0.0, Culture=neutral,

   <add assembly="System.Drawing, Version=2.0.0.0, Culture=neutral,

   <add assembly="System.EnterpriseServices, Version=2.0.0.0, Culture=neutral,

   <add assembly="System.Web.Mobile, Version=2.0.0.0, Culture=neutral,

   <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

與TagPrefix關聯的程式集
Namespace 與TagPrefix關聯的命名空間
使用者控件的位置
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

屬    性 說    明
設定為True時,指定master頁面的事件是否自動觸發。預設設定為True
指定編譯頁面時綁定到master頁面上的類名
(續表)  
編譯字元串,表示master頁面的編譯選項
帶一個String值,指向用于master頁面的背景編碼檔案
設定為True時,用調試符号編譯master頁面
提供master頁面的文本描述。ASP.NET 解析器會忽略這個屬性及其值
設定為True時,表示master頁面可以使用主題功能。其預設設定是False
設定為True時,維護master頁面的視圖狀态。其預設設定是True
指定master頁面要繼承的CodeBehind類
帶一個String值,指向master 頁面所使用的master頁面的位址。master頁面可以使用另一個master頁面,建立嵌套的master頁面
指向類的源檔案,用于要顯示的master頁面的背景編碼
設定為True時,使用Visual Basic Strict模式編譯master頁面。其預設設定是False

-----------------------------------------------------------------

  • 我做的小程式們
  • 【推薦】Web版短信管理平台源碼
  • WinForm版短信管理平台源碼
  • 移動短信程式源碼Win服務版(CMPP3.0/CMPP2.0協定)
  • 移動物聯網卡短信源碼(CMPP3.0協定,支援MsSql/MySql資料庫)
  • C#實作聯通短信Sgip協定程式源碼
  • C#實作電信短信SMGP協定程式源碼
  • C#實作移動短信CMPP服務端程式源碼