事件是一种动作或事件,例如鼠标单击,按键,鼠标移动或任何系统生成的通知.流程通过事件进行通信.例如,中断是系统生成的事件.当事件发生时,应用程序应该能够响应并管理它.
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 - 在加载页面或控件时引发.
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)常见的控制事件是:
Event | 属性 | 控件 |
---|---|---|
Click | OnClick | 按钮,图片按钮,链接按钮,图片地图 |
Command | OnCommand | 按钮,图片按钮,链接按钮 |
TextChanged | OnTextChanged | 文本框 |
SelectedIndexChanged | OnSelectedIndexChanged | 下拉列表,列表框,单选按钮列表,复选框列表. |
CheckedChanged | OnCheckedChan ged | 复选框,单选按钮 |
某些事件会导致表单立即回发到服务器,这些称为回发事件.例如,单击事件,例如Button.Click.
某些事件不会立即回发到服务器,这些事件称为非回发事件.
例如,更改事件或选择事件,如TextBox.TextChanged或CheckBox.CheckedChanged.可以通过将其AutoPostBack属性设置为true来立即回发非后备事件.
Page对象的默认事件是加载事件.同样,每个控件都有一个默认事件.例如,按钮控件的默认事件是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/>"; } } }
执行页面.标签显示页面加载,页面初始化和页面预渲染事件.单击按钮以查看效果: