簡述*.aspx文件中@Page指令的作用

【考點】
@Page指令的理解。
【出現頻率】
★★★★☆
【解答】
通常情況下,*.aspx文件(無論是單文件模型還是隱藏文件模型編寫)都由@Page指令開始,通過對這個指令的各種屬性進行設置,可以告知ASP.NET運行庫處理頁面的各種細節。假設名爲NetWeb的WEB項目中,Index.aspx網頁由C#語言編寫服務端代碼,其@Page指令最常用的設置如以下代碼所示。
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Index.aspx.cs" Inherits="NetWeb._Index" %>
在這個@Page指令中,“Language”屬性指明所使用的託管語言類型。“AutoEventWireup”屬性可設置Index.aspx頁面的事件是否自動綁定,其值爲布爾類型。而“CodeBehind”屬性指定包含與頁關聯的類的已編譯文件的名稱,這個屬性不能在運行時使用。“Inherits”定義本頁面所繼承的代碼隱藏類,該類的以分部類方式定義於“CodeBehind”屬性所指向的*.cs文件中,該類派生於System.Web.UI.Page類。
【分析】
本題考查面試者對ASP.NET頁面模型的理解是否深刻,開發經驗是否豐富。@Page指令只能在WEB窗體頁中使用,每個.aspx 文件只能包含一條@Page指令。並且每條@Page指令只能定義一個Language屬性,因爲每頁只能使用一種託管語言,如C#或者VB。如果有一個想應用於所有頁的公共屬性(例如,希望在所有頁上啓用調試),應考慮在Web.config文件中啓用相應的功能,而不是向每個單獨的頁添加Debug屬性。
“AutoEventWireup”屬性設置爲“true”時,服務端的事件將自動綁定。例如頁面的Load事件所綁定的事件處理方法爲Page_Load,頁面中有ID爲“MyBtn”控件,其“Click”事件的處理方法即爲MyBtn_Click。這種命名方法非常方便,如果編程者需要某個事件的處理方法使用自定義名稱,則只需設置“AutoEventWireup”屬性爲“false”即可。
“CodeBehind”屬性是.NET 1.1的頁面中常用的屬性,而在.NET 2.0中則提倡使用“CodeFile”屬性指定該源文件的名稱。現在,用VS 2008創建的WEB應用程序模板再次迴歸.NET1.1的方式,使用“CodeBehind”屬性指定被隱藏的代碼文件。使用WEB應用程序的這種方式會生成對應的*.designer.cs文件,用於存放服務器端控件的聲明。“CodeFile”屬性指定本網頁引用的代碼隱藏文件的路徑,它和“CodeBehind”屬性是有區別的。“CodeBehind”屬性指定的是已編譯的文件名稱,當該*.cs代碼編譯爲*.dll後,部署網站時就不需要這個*.cs文件了,頁面可以正常訪問。而“CodeFile”屬性也是指向*.cs文件,如果網站部署後,*.cs代碼已編譯爲*.dll,當*.cs文件不存在於所部署的網站目錄時,頁面將報錯“文件“/*.aspx.cs”不存在。
“Inherits”屬性和以上屬性配合使用,當與“CodeBehind”屬性一起使用時,如果“Inherits”屬性所指定的類沒有被編譯,那麼頁面訪問將報錯“未能加載類型“類名稱”。當與“CodeFile”屬性一起使用時,則不需要先編譯該類,並可直接訪問頁面。在VS 2008的WEB應用程序項目模板中,默認使用“CodeBehind”屬性,所以在訪問頁面前要編譯代碼文件。
說明:除此之外,@Page還有其他的屬性,如“MasterPageFile”屬性用於設置內容頁的母版頁或嵌套母版頁的路徑,“ResponseEncoding”屬性用於指示用於包含頁內容的HTTP響應的編碼方案的名稱。還有一些比較重要的屬性,如“ValidateRequest”屬性、“EnableViewState”屬性、“Buffer”屬性等,將在後面的相關題目中講述。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章