[ASP.NET 教程] 三. Web Forms編程模型

來源:互聯網
上載者:User
asp.net|web|編程|教程   
1. Web Forms編程模型

Web Forms中的使用者介面是由HTML和伺服器控制項共同描述的。每個控制項標籤都對應了一個伺服器上的實際的對象。

控制項觸發的事件是在伺服器端處理的。ASP.NET將用戶端與伺服器端的處理“融合”到一起,看起來就好像事件是在同一端被觸發和處理的,而事實上是用戶端事件導致瀏覽器產生回傳,於是伺服器端對象觸發事件。

<script></script>塊中的伺服器端代碼並不能稱為指令碼,它是被編譯然後啟動並執行,而不是解釋執行,所以它的執行效率會比ASP指令碼高很多。

標籤中的runat=”server”屬性是ASP.NET頁面的關鍵,它讓伺服器“執行”標籤,而不是將標籤文本返回給用戶端,所以在需要ASP.NET處理的標籤上都必須添加runat=”server”。
2. Web控制項

前面例子中的TextBox,Button,Label都是Web控制項。它們是在System.Web.UI.WebControls名稱空間中定義的伺服器控制項,其他具體的控制項可以查閱.NET Framework SDK文檔,它們都可以在ASP.NET Web Forms中使用,其中有簡單的控制項,如Label,也有相當複雜的控制項,如DataGrid。
3. HTML 控制項

HTML控制項是ASP.NET 的另一種伺服器控制項,它們定義在System.Web.UI.HtmlControls名稱空間中,具體請查閱.NET Framework SDK文檔,它們通常是在常規的HTML標籤中添加runat="server",比如<input type="text" runat="server" />實際上就是一個System.Web.UI.HtmlControls.HtmlInputText的對象,實際上每個Web Form中的<form runat="server" />標籤就是一個HTML控制項。
4. 頁面事件

並非只有伺服器控制項可以觸發事件,頁面同樣可以。

首先,在介紹頁面事件前,什麼是頁面?下面描述了ASP.NET處理doadd.aspx的過程:

1) 系統建立一個臨時檔案,其中包含了一個由System.Web.UI.Page派生的類,它代表Web頁面。
2) ASP.NET把根據aspx檔案產生的程式碼放到剛剛產生的類中。其中Add方法會稱為產生類的成員。
3) 這個類被編譯為一個dll檔案,存放在系統檔案夾。以後的請求將直接使用這個dll檔案,而不會重複1,2步,除非源檔案已被改變。
4) 請求頁面時,ASP.NET執行個體化這個派生的類,然後“執行”它,Page對象執行個體化其中的所有控制項,將它們的輸出發送到瀏覽器。
如果安裝了.NET Framework SDK 1.1可以查看下面這張圖來瞭解這個過程:
ms-help://MS.NETFrameworkSDKv1.1.CHS/cpguidenf/html/vbderivedpagebaseclasstowebformoutput.gif

.NET Framework SDK文檔描述了Page類的所有事件,這裡僅介紹幾個重要的 
Page.Load事件
Page.Load事件在頁面載入時觸發,我們通常在Load事件處理中通過Page.IsPostBack屬性來判斷頁面時第一次載入還是產生回傳後載入的。IsPostBack是非常重要的屬性,如果IsPostBack為true則表示產生了回傳,一般來說,在回傳時不需要初始化控制項,ASP.NET會保持控制項狀態。 
Page.Init事件
Page.Init事件在頁面初始化時觸發,PostBack時不會觸發,所以可以在這裡初始化控制項,串連事件處理常式等等。 
Page.PreRender事件
PreRender事件在頁面執行完畢,即將呈現介面時觸發,可以在這裡處理頁面的結束動作。
5. 頁面指令
可以在aspx檔案中使用頁面指令,雖然標準的做法是將指令包括在檔案的開頭,但是它們可以位於檔案中的任何位置。每個指令都可以包含一個或多個特定於該指令的屬性。

在所有頁面指令中@Page是最常用的一個,例如:

代碼:
<%@ Page Language="c#" %>
這個條指令設定所有內嵌代碼的語言。比如:

HTML 代碼:
<html>
<body>
 Now Time: <% Response.Write(DateTime.Now.ToString()); %>
</body>
</html>

@Page在一個頁面中只能出現一次

@Import指令可以為頁面匯入一個命名空間,例如:

代碼:
<%@ Import Namespace="System.Data" %>

相當於C#代碼:

代碼:
using System.Data;

@Import指令可以多次出現

還有許多其他指令,沒種指令也有很多屬性,這裡不可能詳細介紹,請查閱.NET Framework SDK文檔的相關部分。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.