第一步:根据 Form里面的请求内容(ViewState)确定是否是IsPostBack
第二步:页面初始化之前
this.PerformPreInit();
private void PerformPreInit()
{
this.OnPreInit(EventArgs.Empty);//一般在这里面设置主题,加载模板由
this.InitializeThemes();//初始化主题,如果已经设置主题直接退出,如果没有设置根据配置来。
this.ApplyMasterPage();//设置模板页,如果模板页已经存在(如在OnInit代码里面设置了新的模板页就不走原来的了)就结束
this._preInitWorkComplete = true;
}
第三步:
OnInit()执行
this.OnInitComplete(EventArgs.Empty);
初始化结束
第四步:处理回发数据
this.LoadAllState();//加载所有的ViewSate:Page以及控件的
this.ProcessPostData(this._requestValueCollection, true);//处理回发数据,就看一下哪些控件变化了,然后调用下面的方法
this.RegisterRequiresRaiseEvent(control.PostBackEventHandler);//注册要触发事件的控件
第五步:
this.OnPreLoad(EventArgs.Empty);
第六步:
Onload();
this.LoadRecursive();
第七步:
this.ProcessPostData(this._leftoverPostData, false);
this.RaiseChangedEvents();//调用一些需要ViewState参与才能感知 事件的方法执行
this.RaisePostBackEvent(this._requestValueCollection);//调用 按钮的click事件处理
第八步:
this.OnLoadComplete(EventArgs.Empty);
最后:
this.PrepareCallback(callbackControlID);//为 IsPostback设置标志
this.PreRenderRecursiveInternal();//渲染服务器端控件之前,允许你最后一次改变当前控件东西
this.SaveAllState();
this.OnSaveStateComplete(EventArgs.Empty);
this.RenderControl(this.CreateHtmlTextWriter(this.Response.Output));
this._context.ApplicationInstance.CompleteRequest();