程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> 淺談ASP.NET內部機制(三)

淺談ASP.NET內部機制(三)

編輯:關於ASP.NET

前言:當我們把頁面中的數據包含在表單中發送到服務器的時候,數據到底是以什麼形式發送的?服 務器接受到提交的數據後是如何讀取這些數據,又是如何要決定來引發事件的?我們怎麼樣才能讓我們自 定義的控件能夠在服務器端觸發事件?為什麼服務器控件有的要實 IPostBackEventHandler,IPostBackDataHandler?.....

大家已經在知道,在我們開發ASP.NET網站的時候,每個服務器控件都有自己的ID。為了後面更好的展 開,下面我們就來簡單的看看這個場景:當我們在浏覽器中點擊了一個服務器控件,如 Button,此時頁 面回傳給服務器,然後服務器就引發控件的Click等事件,這個場景是簡單的不能在簡單了。我們來進一 步看,我們知道,不是所有的控件都會在服務器端觸發事件的,比如 submit按鈕,這個按鈕也同樣可以 把表單數據傳到服務器,但是這個控件不能在服務器端觸發事件。其實在一個頁面提交到了服務器之後, 服務器就會檢查是哪個控件引起了頁面提交,然後就把這個控件的ID找到,然後再在我們請求的那個頁面 ,如Default.aspx (假設我們點擊按鈕,請求的是Default.aspx),去找是否有服務器控件的ID和此時提交 頁面的ID是一樣的,如果有,那麼就在頁面的生命周期的合適的時候,引發事件,在把處理的結果返回; 如果沒有,服務器就不做什麼了特別的處理。

還有一點要注意的是,在查找那個控件的ID 的時候,頁面(如Default.aspx),已經被編譯成為了一 個繼承自Page的類

當然,上面說的只是一個很粗略額過程,希望大家有個總體的認識。下面就細致的講解。

我通過一個流程來解釋:

1.我們首先請求一個服務器端的頁面,如:http://localhost/Demo/Default.aspx。為了方便解釋, 假設頁面只有三個服務器控件:TextBox,DropDowmList,Button

定義如下:

<%@ Page Language=”C#” %>
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head runat=”server”>
<title>Untitled Page</title>
</head>
<body>
<form id=”form1” runat=”server”>
     <asp:TextBox runat=”server” ID=”TextBox1” />


     <asp:DropDownList runat=”server” ID=”DropDownList1”>
     <asp:ListItem Text=”Text1” Value=”Value1” />
     <asp:ListItem Text=”Text2” Value=”Value2” />
     <asp:ListItem Text=”Text3” Value=”Value3” />
     </asp:DropDownList>


     <asp:Button runat=”server” Text=”Submit” />
</form>
</body>
</html>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved