ASP.NET事件處理

事件是一個動作或事件,如鼠標點擊,按鍵,鼠標移動或任何系統生成的通知。 一個過程通過事件進行通信溝通。例如,中斷是系統生成的事件。當事件發生時,應用程序應該能夠響應並管理它。

ASP.NET中的事件在客戶機上引發的,並在服務器機器上處理。 例如,用戶點擊瀏覽器中顯示的按鈕。則點擊(Click)事件就會被被引發。瀏覽器通過將其發佈到服務器,並由服務器來處理這個客戶端事件。

服務器有一個子程序描述事件發生時該怎麼做(處理); 它被稱爲事件處理程序。 因此,當事件消息被髮送到服務器時,它檢查點擊(Click)事件是否具有關聯的事件處理程序。 如果有,則執行事件處理程序。

事件參數

ASP.NET事件處理程序通常需要兩個參數並返回void。 第一個參數表示引發事件的對象,第二個參數表示事件參數。

事件的一般語法是:

private void EventName (object sender, EventArgs e);

應用程序和會話事件

ASP.Net中最重要的應用程序事件是:

  • Application_Start - 當應用程序/網站啓動時引發。
  • Application_End - 當應用程序/網站停止時引發。

同樣,最常用的Session事件是:

  • 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

複選框,單選按鈕

有些事件會導致表單被立即回發到服務器,這些被稱爲回發事件。 例如,點擊事件,如Button.Click

某些事件不會立即回發到服務器,這些事件被稱爲非回發事件。

例如,更改事件或選擇事件,如TextBox.TextChangedCheckBox.CheckedChanged。 通過將其AutoPostBack屬性設置爲true,可以使nonpostback事件立即回發。

默認事件

Page對象的默認事件是Load事件。 同樣,每個控件都有一個默認事件。 例如,按鈕控件的默認事件是Click事件。

只需在設計視圖中雙擊控件,即可在Visual Studio中創建默認事件處理程序。 下表顯示了一些常用控件的默認事件:

控件

默認事件

AdRotator

AdCreated

BulletedList

AClick

Button

AClick

Calender

ASelectionChanged

CheckBox

ACheckedChanged

CheckBoxList

ASelectedIndexChanged

DataGrid

ASelectedIndexChanged

DataList

ASelectedIndexChanged

DropDownList

ASelectedIndexChanged

HyperLink

AClick

ImageButton

AClick

ImageMap

AClick

LinkButton

AClick

ListBox

ASelectedIndexChanged

Menu

AMenuItemClick

RadioButton

ACheckedChanged

RadioButtonList

ASelectedIndexChanged

示例

這個例子包括一個帶有標籤控件和按鈕控件的簡單頁面。 當Page_LoadPage_InitPage_PreRender等頁面事件發生時,它會發送一個消息,由標籤控件顯示。當按鈕被點擊時,引發Button_Click事件,並且還發送要在標籤上顯示的消息。

創建一個新的網站項目:EventHandling,點擊文件->新建->網站,然後選擇空網站, 如下 -

ASP.NET事件處理

解決方案資源管理器中,右擊項目的名稱,在彈出的菜單中,選擇添加->添加新項目,選擇Web窗體,並存爲Default.aspx,如下圖所示 -

ASP.NET事件處理

並從控制工具箱中拖動一個標籤控件和一個按鈕控件。參考下圖 -

ASP.NET事件處理

使用屬性窗口,將標籤控件的ID設置爲 lblmessage ,按鈕控件的ID設置爲btnclick。 將Button控件的Text屬性設置爲 - "事件按鈕"

標記文件(Default.aspx):

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>Asp.net事件處理</title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:Label ID="lblmessage" runat="server" Text="Label"></asp:Label>
            <br />
            <asp:Button ID="btnclick" runat="server" Text="事件按鈕" OnClick="btnclick_Click" />
        </div>
    </form>
</body>
</html>

雙擊設計視圖移動到文件後面的代碼。 Page_Load事件是自動創建的,沒有任何代碼。 編寫寫以下的代碼行用來處理相關事件:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

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

執行該頁面。標籤顯示頁面加載,頁面初始化和頁面預渲染事件。點擊按鈕看效果:

ASP.NET事件處理

點擊事件按鈕,得到以下結果 -

ASP.NET事件處理

易百教程移動端:請掃描本頁面底部(右側)二維碼並關注微信公衆號,回覆:"教程" 選擇相關教程閱讀或直接訪問:http://m.yiibai.com

上一篇:ASP.NET第一個程序 下一篇:ASP.NET服務端

加QQ羣啦,易百教程官方技術學習羣

QQ羣名稱

羣號

人數

免費

等級

羣介紹

JAVA技術

227270512

2000

LV5

Java基礎,JSP(Servlet),JAVA框架,Java高併發架構,Maven等等

MySQL/SQL

418407075

2000

LV5

SQL基礎,MySQL基礎,MySQL存儲過程,視圖,觸發器等等

大數據開發

655154550

2000

LV5

Spark,zookeeper,kafka,CDH,hive,fulme,hbase等Hadoop雲計算生態圈技術

Python技術

287904175

2000

LV5

Python編程,Python Web,Python大數據,Python爬蟲,自然語言處理等

Linux技術

479429477

2000

LV1

Redhat/Centos,Ubuntu,Shell,運維,監控等技術

PHP/Web開發者

460153241

1000

LV0

PHP基礎,PHP高級,網站優化/架構,JS,HTML,JQuery,前端等Web開發技術

人工智能

456236082

1000

LV0

人工智能,深度學習,算法等技術

Oracle數據庫

175248146

1000

LV0

SQL基礎,Oracle基礎,Oracle存儲過程,視圖,觸發器等等

Android開發

159629185

1000

LV0

Android開發,Android Studio,Kotlin,Dagger等技術

微軟技術

579821706

1000

LV0

C#,ASP.Net,VB.Net,ADO.Net,SQL Server,VBA,Excel等技術