网页的生命周期列表 PreInit () >初始化Theme应用MasterPage和控件Skin >Init >InitComplete () >If PostBack创建子控件并加载控件/视图状态 >PreLoad () >Load >If PostBack则触发服务器端事件 >LoadComplete () >If not PostBack则创建子控件 >PreRender >PreRenderComplete () >保存控件/视图状态 >SaveStateComplete () >Render >Unload 需要注意的是上图中标注()的事件即ASPNET 中新增的事件都仅仅是Page类中可以使用并不是像其他事件一样可以在控件中使用 ASPNET 中可以通过启用(默认值为True)AutoEventWireUp为网页事件创建事件处理程序并使用隐式为事件处理程序注册的方法名 以下是VS隐式为各个事件添加关联的方法 事件 > 方法名 PagePreInit > Page_PreInit ControlInit > Page_Init PageInitComplete > Page_InitComplete PagePreLoad > Page_PreLoad ControlLoad > Page_Load PageLoadComplete > Page_LoadComplete ControlPreRender > Page_PreRender ControlDataBinding > Page_DataBind PagePreRenderComplete > Page_PreRenderComplete PageSaveStateComplete > Page_SaveStateComplete ControlUnload > Page_Unload TemplateControlError > Page_Error TemplateControlAbortTransation > Page_AbortTransation TemplateControlAbortTransation > OnTransationAbort TemplateControlCommitTransation > Page_CommitTransation TemplateControlCommitTransation > OnTransationCommit Page基类会在请求的开头阶段调用基类TemplateControl的HookUpAutomaticHandlers方法该方法遍历上表中所示的方法名并使用反射在程序员的类中查找具有相同名称和合适特征标的方法如果找到合适的方法则创建一个类型合适的委托并使用该方法初始化它并将其加入委托列表该委托在相应事件发生时候将被触发 这些事件都是由基类Page的一个虚方法或者Page类从基类Control继承的虚方法触发所以可以有三种方法注册这些事件(以Load事件为例) 显式的将一个委托和一个事件关联起来(通常都是在网页的Init处理程序中) 编写一个名为Page_Load的方法并使其特征标和事件相同 重写Override虚方法Onload 这个三个方法中重写Override比较快一点点但是VS默认是第二种 |