ASP.NET 母版页和内容页中的事件我们知道母版页和内容页都可以包含控件的事件处理程序。对于控件而言内容页中的控件在内容页中引发事件,母版页中的控件在母版页中引发事件。控件事件不会从内容页发送到母版页,也不能在内容页中处理来自母版页控件的事件,它们只会在自己事件内部进行处理。 下面是母版页(Master)与内容页(ContentPage)合并后事件的发生顺序: Master页面控件 Init 事件。ContentPage页面控件 Init 事件。Master页 Init 事件。ContentPage页 Init 事件。ContentPage页 Load 事件。Master页 Load 事件。ContentPage页面控件 Load 事件。ContentPage页面 PreRender 事件。Master页面 PreRender 事件。Master页面控件 PreRender 事件。ContentPage页面控件 PreRender 事件。
母版页和内容页中的事件顺序对于页面开发人员并不重要。但是,如果创建的事件处理程序取决于某些事件的可用性,了解母版页和内容页中的事件顺序很有帮助。 Asp.Net中页面事件加载的先后顺序1、单独一个Page 执行中将按照如下顺序激活事件: Page.PreInitPage.InitPage.InitComplitePage.PreLoadPage.LoadPage.LoadCompletePage.PreRenderPage.PreRenderComplete
2、如果页面从另一个页面继承,如BasePage:System.Web.UI.Page,在BasePage中添加了一下验证功能,如是否登录、是否拥有权限等方面的检查,而其它页面从BasePage继承,则BasePage和最终Page的事件激活顺序是: BasePage.PreInitPage.PreInitBasePage.InitPage.InitBasePage.InitComplitePage.InitCompliteBasePage.PreLoadPage.PreLoadBasePage.LoadPage.LoadBasePage.LoadCompletePage.LoadCompleteBasePage.PreRenderPage.PreRenderBasePage.PreRenderCompletePage.PreRenderComplete
3、如果使用了MasterPage,则MasterPage中的事件和ContentPage中的事件按照下面顺序激活: ContentPage.PreInitMaster.InitContentPage.InitContentPage.InitCompliteContentPage.PreLoadContentPage.LoadMaster.LoadContentPage.LoadCompleteContentPage.PreRenderMaster.PreRenderContentPage.PreRenderComplete
需要注意的是Master里面是没有PreInit事件。 BasePage.PreInitContentPage.PreInitMaster.InitBasePage.InitContentPage.InitBasePage.InitCompliteContentPage.InitCompliteBasePage.PreLoadContentPage.PreLoadBasePage.LoadContentPage.LoadMaster.LoadBasePage.LoadCompleteContentPage.LoadCompleteBasePage.PreRenderContentPage.PreRenderMaster.PreRenderBasePage.PreRenderCompleteContentPage.PreRenderComplete
只需要记住:先加载继承页,再加载自己,如果继承页有继承则先加载继承页的继承。
Init,Load,PreRender事件执行顺序: 个人研究的一些心得体会:(下面的两点可以通过自建页面并重写相关事件进行验证) 1.Init事件从最里面的控件(例如用户控件)向最外面的控件(页面)引发,Load及PreRender等其他事件从最外面的控件向最里面的控件引发。 2.控件之间相同事件的执行顺序依控件在页面的位置按从左到右,从上到下的先后顺序执行。 注意: 可仔细看看这篇文章讲的很好。原文用图片的形式添加,下载放大查看即可。建议使用谷歌浏览器,然后右键在新窗口打开,然后放大查看即可。 |
|