
- 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 - 在会话结束时引发。
Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.
页面和控件事件
常见的页面和控件事件包括
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/>"; } } }
执行页面。标签显示页面加载、页面初始化和页面预呈现事件。点击按钮查看效果
