ASP.NET编程之事件Events
来源:互联网 发布:城市出行数据 编辑:程序博客网 时间:2024/05/17 09:18
程序运行大致有两种:一种是线性的;一种是事件驱动的。线性的是指程序从步骤1,到步骤2,到步骤3,一直延续,直到最后一个步骤结束。与线性不同的是,实现驱动编程时对正在发生的事情一种反应;例如按键被按下了,更一般的是,事件一般都由用户的行为产生的,不过有些事件也能被系统引起。
ASP.NET有上千种事件,应用程序有事件,会话有事件,页面和大部分的服务器控件也能激起事件。所有的ASP.NET事件是在服务器端被处理的,一些事件是立即被投递到服务器端,有一些事件被保留知道下次页面被投递会服务器。由此,我们可以看出ASP.NET与传统的客户端应用程序的不同,传统的客户端程序,事件的激发和处理都在客户端,而在ASP.NET中事件一般是在客户端激发的都是在服务器端被处理。
事件参数(Events Arguments):
事件是用delegate进行实现的。一个delegate是一个指定处理方的方法(method)描述的封装。
按照传统,所有的ASP.NET处理器需要两个参数,没有返回值。第一个参数代表着激发事件的对象,一般它被称之为sender(尽管它有可能不需要);第二个参数称之为事件参数,包含事件的特殊信息,对于大多数参数,这种事件参数是一种EventArgs类型。因此一般的事件原型如下:
private void EventName (object sender, EventArgs e)
应用程序和会话事件(Application and Session Events):
应用程序事件:当一个程序启动时会激发Application_Start Event,这时候是初始化应用程序资源的最佳时期;而当程序结束的时候会激发Application_End Event,这时候需要关闭系统资源等善后工作。
会话事件:与应用程序相似,一个会话以从应用程序发出第一个页面请求为开始,以应用程序关闭会话或会话超时为结束。当会话开始时会激发一个Session_Start Event,同样的会话结束时会激发Session_End Event。
页面和控件事件(Page and Control Events):
页面(page)和控件(controls)都带有从Control class继承过来的事件(Event)。一些常见的页面和控件事件:
Event name
Description
DataBinding
Occurs when the control binds to a data source
Disposed
Occurs when the control is released from memory
Error
For the page only; occurs when an unhandled exception is thrown
Init
Occurs when the control is initialized
Load
Occurs when the control is loaded to the Page object
PreRender
Occurs when the control is about to be rendered
Unload
Occurs when the control is unloaded from memory
回发事件 VS 非回发事件 (Postback Versus Non-Postback Events):
回发事件(Postback Events)是指时间激发后要立即被投递至服务器端,一般是点击型事件,如Button.Click;与之对应的是许多事件不需要立即被投递到服务器端,例如Text.TextChanged事件,这些事件被缓存后直到下次投递出现的时候一起被送至服务器端。常见的回发式控件和非回发式控件:
Postback
Non-postback
Button
BulletedList
Calendar
CheckBox
DataGrid
CheckBoxList
DataList
DropDownList
FileUpload
ListBox
GridView
RadioButtonList
ImageButton
RadioButton
ImageMap
TextBox
LinkButton
Menu
Repeater
IsPostBack属性:
页面对象提供了IsPostBack属性,它是一个只读的属性值,代表着页面是被初次加载还是为了响应客户端回发事件而被重新加载的。有许多昂贵的操作只需在初次加载时被执行,如果是重新加载的话这些操作无需再次执行。例如:
protected void Page_Load(Object sender, EventArgs e) { if (! IsPostBack) { // Do the expensive operations only the // first time the page is loaded. } }
VS2005中的事件:
VS2005 IDE自动处理需要实现事件的大部分操作。当你创建一个web 应用程序时,VS2005自动包含了代码嗅探器去处理页面加载事件:
Page_Load
Page_AbortTransaction
Page_CommitTransaction
Page_DataBinding
Page_Disposed
Page_Error
Page_Init
Page_InitComplete
Page_Load
Page_LoadComplete
Page_PreInit
Page_PreLoad
Page_PreRender
Page_PreRenderComplete
Page_SaveStateComplete
Page_Unload
多控件对应于一个事件处理器:(Multiple Controls to One Event Handler):
一个事件处理器能够处理来自于不同控件的事件。例如以下代码:
private void BtnClick(object sender, System.EventArgs e) { Button b = sender as Button; String buttonID = b.ID; switch (buttonID) { case "btnDoThis": // code to do this case "btnDoThat": // code to do that } // code to do stuff common to all the buttons }
- ASP.NET编程之事件Events
- html5:服务器事件推送(server-sent events)Asp.net
- ASP.NET Events
- nodeJS之事件events
- iOS边城之事件(Events)
- iOS边城之事件(Events)
- ASP.NET Page Life Cycle Events
- ASP.NET编程之控件
- nodejs系统包之events(事件)
- krpano元素之events事件标签
- events 事件
- (C#)ASP.Net之Load、Init事件
- C#和ASP.NET之事件
- ASP.NET之Gridview的行绑定事件RowDataBound事件
- [ASP.NET学习笔记之八]ASP.NET控件编程
- ASP.NET编程模型之ASP.NET页面生命周期图解
- ASP.NET编程模型之ASP.NET页面生命周期图解
- ASP.NET编程模型之ASP.NET页面生命周期图解
- 第十六天:异常处理
- NVIDIA在GDC展示最新DX10开发套件
- 第十七天:IO流
- 第十八天:IO流
- 第十九天:IO流
- ASP.NET编程之事件Events
- 查看TCP keepalive参数
- poj 1273 Drainage Ditches--最大流--Dinic
- 第二十天:IO流
- C# FileSystemWatcher 在监控文件夹和文件时的用法
- IOS NSString
- 第二十一天:网络编程
- js运算符instanceof的工作原理
- C# WinForm多线程