ASP.NET 事件處理

2022-06-27 15:37 更新

事件處理

本節(jié)為你介紹 ASP.NET 事件處理。

事件是一個動作或發(fā)生的事,如鼠標單擊、按鍵、鼠標移動,或任何系統(tǒng)生成的通知。一個進程通過事件進行溝通。例如,中斷是系統(tǒng)生成的事件。當事件發(fā)生,應用程序也能夠回應和管理。

ASP.NET 上的事件在用戶機器上引發(fā),在服務器上處理。例如,一個用戶點擊了在瀏覽器中顯示的一個按鈕。一個點擊事件被引發(fā)。瀏覽器通過把它發(fā)送給服務器從而處理這個客戶端事件。

服務器有一個子程序來描述當事件被引發(fā)時該做什么;這個被稱為事件處理程序。因此,當事件信息被傳遞給服務器,它會檢查點擊事件是否與事件處理程序有關聯(lián)。如果有關聯(lián)的話,事件處理程序就會被執(zhí)行。

事件參數(shù)

ASP.NET 事件處理程序一般采用兩個參數(shù)并返回空。第一個參數(shù)代表了對象激發(fā)事件,第二個參數(shù)是事件參數(shù)。

一個事件的一般句法是:

private void EventName (object sender, EventArgs e);

應用程序和會話事件

最重要的應用程序事件是:

  • Application_Start - 當開啟應用程序或者網(wǎng)頁時被引發(fā)。
  • Application_End - 當停止應用程序或者網(wǎng)頁時被引發(fā)。

同樣的,最常使用的會話事件是:

  • Session_Start – 當用戶最開始從應用程序上請求一個頁面被引發(fā)。
  • Session_End – 當會話結(jié)束后被引發(fā)。

頁面和控件事件

常見的頁面和控件事件有:

  • DataBinding – 當一個控件綁定到一個數(shù)據(jù)源時被引發(fā)。
  • Disposed – 當釋放頁面或者控件時被引發(fā)。
  • Error – 它是一個頁面事件,當有未處理的異常時發(fā)生。
  • Init – 當初始化頁面或者控件時被引發(fā)。
  • Load – 當加載頁面或者控件時被引發(fā)。
  • PreRender – 當顯示頁面或者控件時被引發(fā)。
  • Unload – 當從內(nèi)存中卸載頁面或者控件時被引發(fā)。

使用控件處理事件

所有的 ASP.NET 控件作為類而實現(xiàn),并且當用戶對其執(zhí)行一個特定的動作時,它們會引發(fā)事件。比如說,當一個用戶點擊了一個按鈕,那就生成了 'Click' 事件。對于處理事件來說,有內(nèi)置屬性和事件處理程序。事件處理應用程序被編碼作為一個事件的回應,并且對其采取適當?shù)男袆印?/p>

默認情況下,Visual Studio 創(chuàng)建一個事件處理程序,包括處理條款的子程序。這個子句命名程序處理的控件和事件。

button 控件的 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 子句的前提下被編碼。然后,處理程序必須根據(jù)適合控件屬性的適當事件進行命名。

button 控件的 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

常見的控件事件有:

事件屬性控件
ClickOnClick按鈕,圖像按鈕,鏈接按鈕,圖像導位圖
CommandOnCommand按鈕,圖像按鈕,鏈接按鈕
TextChangedOnTextChanged文本框
SelectedIndexChangedOnSelectedIndexChanged下拉菜單,列表框,單選按鈕列表,帶復選框的列表框
CheckedChangedOnCheckedChanged復選框,單選按鈕

一些事件導致表單立即發(fā)回到服務器,這些被稱為回調(diào)事件。例如,單擊事件像 Button.Click。

一些事件則不會被立即發(fā)回到服務器,這些被稱為非回調(diào)事件。

例如,改變事件或者選擇事件,像 TextBox.TextChanged 或者 CheckBox.CheckedChanged。這些非回調(diào)事件可以通過設置它們的 AutoPostBack 屬性為 true 便可立即使它們回調(diào)。

默認事件

頁面對象的默認事件是加載事件。相似地,每一個控件都有一個默認的事件。比如,按鈕控件的默認事件就是 Click 事件。

默認事件處理程序可以在 Visual Studio 中創(chuàng)建,僅通過雙擊設計視圖中的控件。以下表格展示了一寫常見控件的默認事件:

控件默認事件
廣告控件(AdRotator)AdCreated
項目列表(BulletedList)Click
按鈕(Button)Click
日歷控件(Calender)SelectionChanged
復選框(CheckBox)CheckedChanged
復選列表(CheckBoxList)SelectedIndexChanged
數(shù)據(jù)表格(DataGrid)SelectedIndexChanged
數(shù)據(jù)列表(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 等等事件發(fā)生的時候,它就會發(fā)送一條信息,會由標簽控件顯示。當點擊一個按鈕,Button_Click 事件被引發(fā),同樣發(fā)送一條由標簽展示的信息。

創(chuàng)建一個新的網(wǎng)站,從控件工具框中拖拽一個標簽控件和按鈕控件。使用窗口屬性,相應地設置控件的 ID 為 .lblmessage. and .btnclick。設置按鈕控件的文本屬性為“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 事件是自動創(chuàng)建的,其中沒有任何的代碼。寫下以下的自我解釋的代碼行:

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/>";
      }
   }
}

執(zhí)行頁面。標簽顯示頁面加載,頁面初始化以及頁面預覽事件。點擊按鈕查看效果:

image

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號