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
下面幾節簡要介紹這些指令。 1.@Page @Page指令允許為ASP.NET頁面(.aspx)指定解析和編譯頁面時使用的屬性和值。這是最常用的指令。ASP.NET頁面是ASP.NET的一個重要部分,是以它有許多屬性。表3-4總結了@Page指令的可用屬性。 表3-4
2.@Control @Control 指令類似于@Page指令,但 @Control指令是在建立ASP.NET使用者控件時使用的。@Control指令允許定義使用者控件要繼承的屬性。這些屬性值會在解析和編譯頁面時賦予 使用者控件。@Control指令的可用屬性比@Page指令少,但其中有許多都可以在建立使用者控件時進行需要的修改。表3-6詳細介紹了這些可用屬性。 表3-6
@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
下面是使用@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
下面是使用@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
|
-----------------------------------------------------------------
- 我做的小程式們
- 【推薦】Web版短信管理平台源碼
- WinForm版短信管理平台源碼
- 移動短信程式源碼Win服務版(CMPP3.0/CMPP2.0協定)
- 移動物聯網卡短信源碼(CMPP3.0協定,支援MsSql/MySql資料庫)
- C#實作聯通短信Sgip協定程式源碼
- C#實作電信短信SMGP協定程式源碼
- C#實作移動短信CMPP服務端程式源碼