目录

ASP.NET - 事件处理( Event Handling)

事件是一种动作或事件,例如鼠标单击,按键,鼠标移动或任何系统生成的通知。 流程通过事件进行通信。 例如,中断是系统生成的事件。 当事件发生时,应用程序应该能够响应并管理它。

ASP.NET中的事件在客户端计算机上引发,并在服务器计算机上处​​理。 例如,用户单击浏览器中显示的按钮。 引发了Click事件。 浏览器通过将此事件发布到服务器来处理此客户端事件。

服务器有一个子例程,描述引发事件时要做什么; 它被称为事件处理程序。 因此,当事件消息传输到服务器时,它会检查Click事件是否具有关联的事件处理程序。 如果有,则执行事件处理程序。

事件参数

ASP.NET事件处理程序通常采用两个参数并返回void。 第一个参数表示引发事件的对象,第二个参数表示事件参数。

事件的一般语法是:

private void EventName (object sender, EventArgs e);

应用程序和会话事件

最重要的应用事件是:

  • Application_Start - 在应用程序/网站启动时引发。

  • Application_End - 在应用程序/网站停止时引发。

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

  • Session_Start - 当用户首次从应用程序请求页面时引发它。

  • Session_End - 会话结束时引发。

页面和控制事件

常见页面和控件事件是:

  • DataBinding - 当控件绑定到数据源时引发它。

  • Disposed - 释放页面或控件时引发。

  • Error - 这是一个页面事件,在抛出未处理的异常时发生。

  • Init - 初始化页面或控件时引发。

  • Load - 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

常见的控制事件是:

事件 属性 控制
ClickOnClick 按钮,图像按钮,链接按钮,图像映射
CommandOnCommand 按钮,图像按钮,链接按钮
TextChangedOnTextChanged 文本框
SelectedIndexChangedOnSelectedIndexChanged 下拉列表,列表框,单选按钮列表,复选框列表。
CheckedChangedOnCheckedChangedCheck box, radio button

某些事件会导致表单立即回发到服务器,这些称为回发事件。 例如,单击事件,例如Button.Click。

某些事件不会立即回发到服务器,这些事件称为非回发事件。

例如,更改事件或选择事件,如TextBox.TextChanged或CheckBox.CheckedChanged。 可以通过将其AutoPostBack属性设置为true来立即回发非后备事件。

默认事件

Page对象的默认事件是Load事件。 同样,每个控件都有一个默认事件。 例如,按钮控件的默认事件是Click事件。

可以在Visual Studio中创建默认事件处理程序,只需双击设计视图中的控件即可。 下表显示了常用控件的一些默认事件:

控制 默认事件
AdRotatorAdCreated
BulletedListClick
ButtonClick
CalenderSelectionChanged
CheckBoxCheckedChanged
CheckBoxListSelectedIndexChanged
DataGridSelectedIndexChanged
DataListSelectedIndexChanged
DropDownListSelectedIndexChanged
HyperLinkClick
ImageButtonClick
ImageMapClick
LinkButtonClick
ListBoxSelectedIndexChanged
MenuMenuItemClick
RadioButtonCheckedChanged
RadioButtonListSelectedIndexChanged

例子 (Example)

此示例包括一个带有标签控件和按钮控件的简单页面。 当页面事件如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/>";
      }
   }
}

执行页面。 标签显示页面加载,页面初始化和页面预渲染事件。 单击按钮以查看效果:

ASP.NET事件示例
↑回到顶部↑
WIKI教程 @2018