
- ASP.NET 教程
- ASP.NET - 首頁
- ASP.NET - 簡介
- ASP.NET - 環境
- ASP.NET - 生命週期
- ASP.NET - 第一個示例
- ASP.NET - 事件處理
- ASP.NET - 伺服器端
- ASP.NET - 伺服器控制元件
- ASP.NET - HTML 伺服器控制元件
- ASP.NET - 客戶端
- ASP.NET - 基本控制元件
- ASP.NET - 指令
- ASP.NET - 狀態管理
- ASP.NET - 驗證器
- ASP.NET - 資料庫訪問
- ASP.NET - ADO.NET
- ASP.NET - 檔案上傳
- ASP.NET - 廣告輪播
- ASP.NET - 日曆控制元件
- ASP.NET - 多檢視
- ASP.NET - 面板控制元件
- ASP.NET - AJAX 控制元件
- ASP.NET - 資料來源
- ASP.NET - 資料繫結
- ASP.NET - 自定義控制元件
- ASP.NET - 個性化
- ASP.NET - 錯誤處理
- ASP.NET - 除錯
- ASP.NET - LINQ
- ASP.NET - 安全性
- ASP.NET - 資料快取
- ASP.NET - Web 服務
- ASP.NET - 多執行緒
- ASP.NET - 配置
- ASP.NET - 部署
- ASP.NET 資源
- ASP.NET - 快速指南
- ASP.NET - 有用資源
- ASP.NET - 討論
ASP.NET - 事件處理
事件是指諸如滑鼠點選、按鍵、滑鼠移動或任何系統生成的通知等動作或事件。程序透過事件進行通訊。例如,中斷是系統生成的事件。當事件發生時,應用程式應該能夠響應並管理它。
ASP.NET 中的事件在客戶端計算機上引發,並在伺服器計算機上處理。例如,使用者點選瀏覽器中顯示的按鈕。將引發 Click 事件。瀏覽器透過將其釋出到伺服器來處理此客戶端事件。
伺服器有一個子例程描述在引發事件時該做什麼;它稱為事件處理程式。因此,當事件訊息傳輸到伺服器時,它會檢查 Click 事件是否具有關聯的事件處理程式。如果有,則執行事件處理程式。
事件引數
ASP.NET 事件處理程式通常接受兩個引數並返回 void。第一個引數表示引發事件的物件,第二個引數是事件引數。
事件的通用語法為
private void EventName (object sender, EventArgs e);
應用程式和會話事件
最重要的應用程式事件是
Application_Start - 在應用程式/網站啟動時引發。
Application_End - 在應用程式/網站停止時引發。
類似地,最常用的會話事件是
Session_Start - 當用戶第一次從應用程式請求頁面時引發。
Session_End - 在會話結束時引發。
頁面和控制元件事件
常見的頁面和控制元件事件包括
DataBinding - 當控制元件繫結到資料來源時引發。
Disposed - 當頁面或控制元件被釋放時引發。
Error - 頁面事件,在丟擲未處理的異常時發生。
Init - 在頁面或控制元件初始化時引發。
Load - 在頁面或控制元件載入時引發。
PreRender - 在頁面或控制元件即將呈現時引發。
Unload - 在頁面或控制元件從記憶體中解除安裝時引發。
使用控制元件進行事件處理
所有 ASP.NET 控制元件都作為類實現,並且它們具有在使用者對它們執行某些操作時觸發的事件。例如,當用戶點選按鈕時,會生成“Click”事件。為了處理事件,有內建的屬性和事件處理程式。事件處理程式被編碼以響應事件,並對其採取適當的操作。
預設情況下,Visual Studio 透過在 Sub 過程上包含 Handles 子句來建立事件處理程式。此子句命名控制元件和過程處理的事件。
按鈕控制元件的 ASP 標記
<asp:Button ID="btnCancel" runat="server" Text="Cancel" />
Click 事件的事件處理程式
Protected Sub btnCancel_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnCancel.Click End Sub
也可以在沒有 Handles 子句的情況下編寫事件。然後,必須根據控制元件的相應事件屬性命名處理程式。
按鈕控制元件的 ASP 標記
<asp:Button ID="btnCancel" runat="server" Text="Cancel" Onclick="btnCancel_Click" />
Click 事件的事件處理程式
Protected Sub btnCancel_Click(ByVal sender As Object, ByVal e As System.EventArgs) End Sub
常見的控制元件事件包括
事件 | 屬性 | 控制元件 |
---|---|---|
Click | OnClick | 按鈕、影像按鈕、連結按鈕、影像對映 |
Command | OnCommand | 按鈕、影像按鈕、連結按鈕 |
TextChanged | OnTextChanged | 文字框 |
SelectedIndexChanged | OnSelectedIndexChanged | 下拉列表、列表框、單選按鈕列表、複選框列表。 |
CheckedChanged | OnCheckedChanged | 複選框、單選按鈕 |
某些事件會導致表單立即回發到伺服器,這些稱為回發事件。例如,Click 事件,例如 Button.Click。
某些事件不會立即回發到伺服器,這些稱為非回發事件。
例如,更改事件或選擇事件,例如 TextBox.TextChanged 或 CheckBox.CheckedChanged。可以透過將它們的 AutoPostBack 屬性設定為 true,使非回發事件立即回發。
預設事件
Page 物件的預設事件是 Load 事件。類似地,每個控制元件都有一個預設事件。例如,按鈕控制元件的預設事件是 Click 事件。
可以在 Visual Studio 中建立預設事件處理程式,只需雙擊設計檢視中的控制元件即可。下表顯示了一些常用控制元件的預設事件
控制元件 | 預設事件 |
---|---|
AdRotator | AdCreated |
BulletedList | Click |
Button | Click |
Calender | SelectionChanged |
CheckBox | CheckedChanged |
CheckBoxList | SelectedIndexChanged |
DataGrid | SelectedIndexChanged |
DataList | SelectedIndexChanged |
DropDownList | SelectedIndexChanged |
HyperLink | Click |
ImageButton | Click |
ImageMap | Click |
LinkButton | Click |
ListBox | SelectedIndexChanged |
Menu | MenuItemClick |
RadioButton | CheckedChanged |
RadioButtonList | SelectedIndexChanged |
示例
此示例包含一個簡單的頁面,其中包含一個標籤控制元件和一個按鈕控制元件。當頁面事件(如 Page_Load、Page_Init、Page_PreRender 等)發生時,它會發送一條訊息,該訊息由標籤控制元件顯示。當點選按鈕時,會引發 Button_Click 事件,該事件也會向標籤傳送一條訊息以顯示。
建立一個新的網站,並從控制元件工具箱中拖動一個標籤控制元件和一個按鈕控制元件。使用屬性視窗,將控制元件的 ID 分別設定為 .lblmessage. 和 .btnclick.。將 Button 控制元件的 Text 屬性設定為“Click”。
標記檔案(.aspx)
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="eventdemo._Default" %> <!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"> <div> <asp:Label ID="lblmessage" runat="server" > </asp:Label> <br /> <br /> <br /> <asp:Button ID="btnclick" runat="server" Text="Click" onclick="btnclick_Click" /> </div> </form> </body> </html>
雙擊設計檢視以移動到程式碼隱藏檔案。Page_Load 事件會自動建立,其中沒有任何程式碼。寫下以下不言而喻的程式碼行
using System; using System.Collections; using System.Configuration; using System.Data; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; namespace eventdemo { public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { lblmessage.Text += "Page load event handled. <br />"; if (Page.IsPostBack) { lblmessage.Text += "Page post back event handled.<br/>"; } } protected void Page_Init(object sender, EventArgs e) { lblmessage.Text += "Page initialization event handled.<br/>"; } protected void Page_PreRender(object sender, EventArgs e) { lblmessage.Text += "Page prerender event handled. <br/>"; } protected void btnclick_Click(object sender, EventArgs e) { lblmessage.Text += "Button click event handled. <br/>"; } } }
執行頁面。標籤顯示頁面載入、頁面初始化和頁面預呈現事件。點選按鈕檢視效果
