asp.net 控件生命周期和Global.asax事件顺序

阶段控件需要执行的操作要重写的方法或事件
初始化初始化在传入 Web 请求生命周期内所需的设置。请参见处理继承的事件Init 事件(OnInit 方法)
加载视图状态在此阶段结束时,就会自动填充控件的 ViewState 属性,详见维护控件中的状态中的介绍。控件可以重写 LoadViewState 方法的默认实现,以自定义状态还原。LoadViewState 方法
处理回发数据处理传入窗体数据,并相应地更新属性。请参见处理回发数据
注意   只有处理回发数据的控件参与此阶段。
LoadPostData 方法

(如果已实现 IPostBackDataHandler

加载执行所有请求共有的操作,如设置数据库查询。此时,树中的服务器控件已创建并初始化、状态已还原并且窗体控件反映了客户端的数据。请参见处理继承的事件Load 事件

OnLoad 方法)

发送回发更改通知引发更改事件以响应当前和以前回发之间的状态更改。请参见处理回发数据
注意   只有引发回发更改事件的控件参与此阶段。
RaisePostDataChangedEvent 方法

(如果已实现 IPostBackDataHandler

处理回发事件处理引起回发的客户端事件,并在服务器上引发相应的事件。请参见捕获回发事件
注意   只有处理回发事件的控件参与此阶段。
RaisePostBackEvent 方法

(如果已实现 IPostBackEventHandler

预呈现在呈现输出之前执行任何更新。可以保存在预呈现阶段对控件状态所做的更改,而在呈现阶段所对的更改则会丢失。请参见处理继承的事件PreRender 事件

OnPreRender 方法)

保存状态在此阶段后,自动将控件的 ViewState 属性保持到字符串对象中。此字符串对象被发送到客户端并作为隐藏变量发送回来。为了提高效率,控件可以重写 SaveViewState 方法以修改 ViewState 属性。请参见维护控件中的状态SaveViewState 方法
呈现生成呈现给客户端的输出。请参见呈现 ASP.NET 服务器控件Render 方法
处置执行销毁控件前的所有最终清理操作。在此阶段必须释放对昂贵资源的引用,如数据库链接。请参见 ASP.NET 服务器控件中的方法Dispose 方法
卸载执行销毁控件前的所有最终清理操作。控件作者通常在 Dispose 中执行清除,而不处理此事件。 UnLoad

 使用举例:

IPostBackEventHandler 实现自定义的消息映射

public   class  ChildControl: WebControl, IPostBackEventHandler
{
//注册客户端JS
protected override void OnLoad(EventArgs e)
{
script.Append(
"</script> function test(){"));
script.Append(Page.GetPostBackClientEvent(
this"method1"));
                    script.Append(
"</script>");
Page.RegisterStartupScript(
this.ClientID + "_XXXX", script.ToString());
}

//针对自定义回传调用处理
        public void RaisePostBackEvent(string eventArgument)
        
{
            
if (eventArgument == "method1")
            
{
                
//do some thing for method1
            }
else if (eventArgument == "method2")
{
                                
//do some thing
}


        }

}

App_Web_np75z0lk.dll!_Default.Button1_Click(object sender = {Text = "Button"}, System.EventArgs e = {System.EventArgs}) Line 22    C#
System.Web.dll!System.Web.UI.WebControls.Button.OnClick(System.EventArgs e)
System.Web.dll!System.Web.UI.WebControls.Button.RaisePostBackEvent(string eventArgument)
System.Web.dll!System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(string eventArgument)
System.Web.dll!System.Web.UI.Page.RaisePostBackEvent(System.Web.UI.IPostBackEventHandler sourceControl, string eventArgument)
System.Web.dll!System.Web.UI.Page.RaisePostBackEvent(System.Collections.Specialized.NameValueCollection postData)
System.Web.dll!System.Web.UI.Page.ProcessRequestMain(bool includeStagesBeforeAsyncPoint = true, bool includeStagesAfterAsyncPoint = true)
System.Web.dll!System.Web.UI.Page.ProcessRequest(bool includeStagesBeforeAsyncPoint, bool includeStagesAfterAsyncPoint = true)
System.Web.dll!System.Web.UI.Page.ProcessRequest()
System.Web.dll!System.Web.UI.Page.ProcessRequestWithNoAssert(System.Web.HttpContext context
System.Web.dll!System.Web.UI.Page.ProcessRequest(System.Web.HttpContext context)
App_Web_np75z0lk.dll!ASP.default_aspx.ProcessRequest(System.Web.HttpContext context = {System.Web.HttpContext}) + 0x2f bytes    C#
System.Web.dll!System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
System.Web.dll!System.Web.HttpApplication.ExecuteStep(System.Web.HttpApplication.IExecutionStep step = {System.Web.HttpApplication.CallHandlerExecutionStep}, ref bool completedSynchronously = true)
System.Web.dll!System.Web.HttpApplication.ApplicationStepManager.ResumeSteps(System.Exception error)
System.Web.dll!System.Web.HttpApplication.System.Web.IHttpAsyncHandler.BeginProcessRequest(System.Web.HttpContext context, System.AsyncCallback cb, object extraData)
System.Web.dll!System.Web.HttpRuntime.ProcessRequestInternal(System.Web.HttpWorkerRequest wr = {System.Web.Hosting.ISAPIWorkerRequestOutOfProc})
System.Web.dll!System.Web.HttpRuntime.ProcessRequestNoDemand(System.Web.HttpWorkerRequest wr) + 0x62 bytes   
System.Web.dll!System.Web.Hosting.ISAPIRuntime.ProcessRequest(System.IntPtr ecb, int iWRType) + 0x57 bytes   

Global.asax 事件顺序

·Application_Init:在应用程序被实例化或第一次被调用时,该事件被触发。对于所有的HttpApplication 对象实例,它都会被调用。
·Application_BeginRequest 
·Application_AuthenticateRequest 
·Application_AuthorizeRequest 
·Application_ResolveRequestCache 
·Application_AcquireRequestState 
·Application_PreRequestHandlerExecute 
·Application_PreSendRequestHeaders 
·Application_PreSendRequestContent 
·<<执行代码>> 
·Application_PostRequestHandlerExecute 
·Application_ReleaseRequestState 
·Application_UpdateRequestCache 
·Application_EndRequest 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值