ASP.NET Web 網頁簡介
更新:2007 年 11 月
ASP.NET Web 網頁可讓您建立網站的動態內容。使用靜態 HTML 網頁 (.htm 或 .html 檔),伺服器可滿足 Web 要求,方法是讀取檔案並以現有狀態將其傳送至瀏覽器。相反地,當有人要求 ASP.NET Web 網頁 (.aspx 檔) 時,網頁會在 Web 伺服器上當做程式執行。網頁執行時,它可以執行網站需要的任何工作,包括計算數值、讀取或寫入資料庫資訊,或者呼叫其他程式。在輸出時,這個網頁會動態產生標記 (為 HTML 或其他標記語言格式的項目),並向瀏覽器傳送該動態輸出。
本主題提供 ASP.NET Web 網頁在 Web 應用程式中之運作方式的基本特征概觀。
回傳和往返
ASP.NET Web 網頁在伺服器上會做為程式碼一般地執行。因此,為了要能順利處理網頁,在使用者按一下按鈕時 (或者當使用者選擇性地選取核取方塊,或是與網頁中的其他控制項進行互動時),網頁就會被設定並送出至伺服器。每次網頁都會送回給自己,以便再次執行其伺服端程式碼,然後將新版網頁呈現給使用者。
ASP.NET Web 網頁的處理週期如下:
使用者要求網頁 (網頁是使用 HTTP GET 方法所要求)。網頁第一次執行並執行預處理 (如果您設定要執行這個工作)。
網頁將標記動態呈現給瀏覽器,使用者會將其看做是與任何其他網頁類似的 Web 網頁。
使用者輸入資訊,或選取可用的選項,然後按一下按鈕 (如果使用者按的是連結,而不是按鈕,則網頁可能只會巡覽至另一個網頁,且第一個網頁中不會有進一步的處理)。
將網頁張貼至 Web 伺服器 (瀏覽器會執行 HTTP POST 方法,而在 ASP.NET 中,指的是「回傳」)。確切的說就是,網頁會回傳至自身。例如,如果使用者所使用的是 Default.aspx 網頁,則按一下網頁上的按鈕,會將網頁張貼回目標為 Default.aspx 的伺服器。
在 Web 伺服器上,網頁重新執行。網頁中會出現使用者輸入或選取的資訊。
網頁執行您已將其程式化以執行的處理。
網頁將自身呈現回瀏覽器。
只要使用者在該網頁中工作,這個週期就會繼續。使用者每次按一下按鈕時,網頁中的資訊會傳送至 Web 伺服器,且網頁會重新執行。每個週期即稱為一次「往返」。因為網頁處理發生在 Web 伺服器上,所以網頁的每個動作都需要來回存取伺服器。
注意事項: |
---|
ASP.NET Web 網頁可執行用戶端指令碼,不需要來回存取伺服器,且對使用者輸入驗證和部分類型的 UI 程式設計都很有用。如需詳細資訊,請參閱 ASP.NET Web 網頁中的用戶端指令碼。 |
跨網頁公佈
在部分情況下,您可能想要將網頁張帖至另一個網頁,而不是網頁自身,而這稱為「跨網頁傳回」。例如,您可能正在建立處理客戶訂單的一系列網頁。每個網頁都可張貼至序列中的下一個網頁。如需詳細資訊,請參閱在 ASP.NET Web 網頁中跨網頁公佈。
網頁存留期
與桌面應用程式中的表單不同,使用者使用表單時,ASP.NET Web 網頁不會啟動,只在使用者按一下 [關閉] 按鈕時才會卸載。這是因為 Web 原本就已中斷連接。當瀏覽器從 Web 伺服器要求網頁時,瀏覽器和伺服器的連接時間僅足以處理要求。Web 伺服器將網頁呈現至瀏覽器之後,連接就會結束。如果瀏覽器向同一 Web 伺服器發出另一個要求,即使是對同一個網頁,這個要求也會被視為新的要求進行處理。
Web 的中斷連接本質正說明了 ASP.NET Web 網頁執行的方式。使用者要求 ASP.NET Web 網頁時,網頁的新執行個體 (Instance) 就會建立。網頁會執行其處理,並將標記呈現至瀏覽器,然後就會被捨棄。如果使用者按一下按鈕執行回傳,則會建立網頁的新執行個體,網頁會執行其處理,然後會再次被捨棄。因此,每個回傳和往返都會產生網頁的新執行個體。
如需詳細資訊,請參閱 建立 ASP.NET 網頁。
保留網頁狀態
在一般 HTTP 通訊協定中,伺服器唯一具有的網頁資訊就是使用者利用控制項在網頁上所指定的資訊,因為張貼網頁時,瀏覽器只會將該資訊傳送給伺服器。其他例如變數值和屬性 (Property) 設定值的資訊則會捨棄。ASP.NET 透過下列方式協助保留其他網頁資訊:
ASP.NET 會儲存往返之間的控制項設定 (屬性),這稱為儲存「控制項狀態」。
ASP.NET 提供狀態管理功能,讓您可在往返之間儲存自己的變數和應用程式特定或工作階段特定的資訊。
ASP.NET 可偵測第一次要求網頁的時間以及張貼網頁的時間,這可讓您依據此功能進行程式設計。例如,您可能會想要在網頁第一次顯示時讀取資料庫中的資訊,而不是在每次回傳時。
注意事項: 您可設定伺服器快取網頁資訊以將網頁最佳化,不過若為應用程式的程式設計之用,最好是將網頁視為伺服器一完成處理就處置的項目。
如需詳細資訊,請參閱 ASP.NET 狀態管理概觀。
以程式設計 ASP.NET Web 網頁
在 .NET Framework (含 Visual Basic、C# 和 J#) 中,您可以使用各種語言,為 ASP.NET Web 網頁建立伺服端程式碼。ASP.NET Web 網頁可包含在瀏覽器內執行的用戶端指令碼。部分 ASP.NET 功能會產生用戶端指令碼,並將其插入至網頁。在那種情況下,ASP.NET 一律會產生 ECMAScript (JavaScript),以取得最佳跨瀏覽器功能。此外,您可針對自訂功能加入自己的用戶端指令碼。如果這樣做,則可使用與目標瀏覽器相容的任何用戶端指令碼語言。
伺服器控制項
與任何其他網頁類似,ASP.NET Web 網頁可包含靜態文字。然而,您通常會在網頁中加入控制項 (例如文字方塊、核取方塊和按鈕)。這些控制項可讓使用者與網頁互動,並在回傳網頁時將資訊傳送至伺服器。
ASP.NET 提供控制項集合,稱為「Web 伺服器控制項」。ASP.NET 伺服器控制項與對應的 HTML 表單項目類似。例如,ASP.NET TextBox 控制項與 HTML <input type="text"> 標記類似。不過,與 HTML 項目相比,ASP.NET 伺服器控制項能提供給您的程式設計體驗更加豐富。並且,ASP.NET 伺服器控制項的功能要比 HTML 項目提供的更加廣泛。您可用於 ASP.NET Web 網頁的伺服器控制項包括:月曆控制項、顯示清單或格線的資料繫結控制項,以及安將全性加入至網站的登入控制項等等。
如需詳細資訊,請參閱 ASP.NET Web 伺服器控制項概觀。
網頁和伺服器控制項事件
ASP.NET Web 網頁及其上控制項所支援的事件模型,與 Windows Form 中的類似。例如,使用者按一下 ASP.NET Web 網頁上的 Button 伺服器控制項時,會將網頁張貼回伺服器、重新建立網頁,並引發 Click 事件。您可以將程式碼加入至回應這個 Click 事件的網頁中。
初始化網頁時,網頁本身會引發生命週期事件 (例如 Page_Init 和 Page_Load 事件),讓您有機會在網頁啟動時執行程式碼 (請記住,每次往返都會建立並重新初始化網頁)。個別控制項可引發其自己的事件。按鈕控制項會引發 Click 事件、核取方塊和選項按鈕控制項會引發 CheckedChanged 事件,而清單方塊和下拉式清單控制項則會引發 SelectedIndexChanged 事件。部分控制項 (例如 Calendar 控制項) 所引發的事件比簡單的 Click 事件更抽象。例如,使用者巡覽至不同的月份時,Calendar 控制項會引發 VisibleMonthChanged 事件。
大部分的 ASP.NET 伺服器控制項只支援您可在伺服端程式碼中處理的少數事件。若要處理事件,則網頁必須執行往返,將使用者的選項傳送給網頁,以進行處理。伺服器控制項不會公開 (Expose) 高頻率的事件 (例如 onmouseover),因為每次引發這類事件時,就會往返一次伺服器,這樣會嚴重影響網頁中的回應時間。然而,您可以設定 ASP.NET 伺服器控制項引發用戶端事件 (例如 onmouseover)。在這種情況下,控制項不會回傳至伺服器,而您可建立用戶端指令碼以回應事件。
如需建立和使用事件以及事件處理常式的詳細資訊,請參閱 ASP.NET Web 網頁中的伺服器事件處理。
瀏覽器相容性
因為 ASP.NET Web 網頁處理發生在 Web 伺服器上,所以 ASP.NET Web 網頁與所有瀏覽器或行動裝置都相容。Web 網頁會為功能 (例如樣式和配置) 自動呈現正確的瀏覽器相容 (Compliant) 標記 (XHTML 或其他標記語言)。另外,您也可建立 Web 網頁,專門將其中的控制項設計用來呈現特定裝置 (例如行動電話) 的輸出。如需詳細資訊,請參閱建立 ASP.NET Mobile Web 網頁。