asp.net C#母版頁和內容頁事件排版加載順序生命周期
關于ASP頁面Page_Load發生在事件之前而導致的問題已經喜聞樂見,對于問題的解釋也很全面,但是如何解決問題則較少有人說明,我就再
簡單說明一下解決方案。以下是內容頁和母版頁(如果有)的事件發生順序:ContentPage.PReInitMaster.InitContentPage.InitContentPage.InitCompliteContentPage.PreLoadContentPage.LoadMaster.LoadContentPage.LoadCompleteContentPage.PreRenderMaster.PreRenderContentPage.PreRenderComplete
就算知道了發生順序對新手來說也不能怎么樣,那么下面重點就來了:我們都會發現頁面后臺有個protected void Page_Load(object sender, EventArgs e)方法通常大家會把頁面載入時需要做的處理代碼寫在里面,但是這個方法發生在click事件之前,就導致了很多小問題那么有沒有方法是發生在事件之后呢?答案是肯定的:protected void Page_LoadComplete(object sender, EventArgs e)是不是很簡單?但是這個方法仍然發生在母版加載之前,如果彈出對話框會導致母版排版混亂,那么用下面這個就好了protected void Page_PreRenderComplete(object sender, EventArgs e)
于是關于生命周期的問題都迎刃而解,代碼理解起來也流暢多了以下是頁面載入過程中會激活的一些方法執行順序,需要在頁面特定階段寫代碼的話可以用上:protected void Page_Init(object sender, EventArgs e)protected void Page_Load(object sender, EventArgs e)各種用戶自定義的控件click事件protected void Page_LoadComplete(object sender, EventArgs e)protected void Page_PreRender(object sender, EventArgs e)protected void Page_PreRenderComplete(object sender, EventArgs e)protected void Page_Unload(object sender, EventArgs e)protected void Page_Error(object sender, EventArgs e)protected void Page_AbortTransaction(object sender, EventArgs e)protected void Page_CommitTransaction(object sender, EventArgs e)protected void Page_DataBinding(object sender, EventArgs e)protected void Page_Disposed(object sender, EventArgs e)
新聞熱點
疑難解答