今天碰到一个问题,在MasterPage的OnLoad中加入一个判断,希望在ContentPage的OnLoad之前执行,结果发现MasterPage的Onload在ContentPage的OnLoad后执行,后来把这个判断移动到MasterPage的OnInit中搞定
在一个单独的页面中,执行顺序为
- PreInit
- Init
- InitComplete
- PreLoad
- Load
- LoadComplete
- PreRender
- PreRenderComplete
在页面有MasterPage的时候
- ContentPage.PreInit
- Master.Init
- ContentPage.Init
- ContentPage.InitComplete
- ContentPage.PreLoad
-
ContentPage.Load
-
Master.Load
- ContentPage.LoadComplete
- ContentPage.PreRender
- Master.PreRender
注意上面高亮的部分,除此之外其他的地方一般是先MasterPage后ContentPage,这里恰恰相反
那么控件的加载和页面的几个事件的关系是什么呢?
一般情况下,页面中的控件回先于OnInit执行,亦即
- Master中控件的Init
- ContentPage中控件的Init
- Master.Init
- Content.Init
- Content.Load
- Master.Load
- Master.中用户控件load
- ContentPage页面中的用户控件的 page_load
可以看到控件的Init在Page的Init前执行,所以在Init中我们就可以放心使用页面中的控件了,但是下面的情况不同
如果你的页面中使用WebControl,或者从WebControl继承的控件,WebControl需要使用CreateChildControls()来加载子控件,这个函数会在这个控件的Init后被调用,也就是说在一个WebControl的OnInit中,是没有办法直接使用其中的控件的,不过我们也可以自己用FindControl把控件加载进来,WebControl的其他方法的加载顺序见下表
Event
Description
<!-- Start Content of Table -->
Init |
You can use the OnInit method to trap this event and initialize member variables and other values. |
LoadViewState |
You can trap this event to customize how the control retrieves information from the ASP.NET hidden ViewState field. |
Load |
This event is raised after you create and initialize the control. This is the best place to make the connection to the database or load document content. You can trap the Load event by adding the OnLoad method to the class. |
PreRender |
This event is raised before ASP.NET renders the control. Any changes to the control's state are saved into the hidden ViewState field. |
SaveViewState |
This event is raised before the control state is persisted into the hidden ViewState field. You can trap the event to customize how this information is stored. |
Render |
You can use the Render method to respond to this event and specify the HTML code that represents the component's content. |
Dispose |
This event is useful for cleanup operations. It's raised before the control is torn down and is the best place to free the resources created during the load phase. |
Unload |
This event is raised before the control is torn down. The official documentation says not to use this event to perform cleanup, and to rely on the Dispose event instead. |
<!-- End Content of Table -->
分享到:
相关推荐
能很直观的了解ASP.NET 2.0页面执行顺序
10. **页面生命周期和事件模型**:理解ASP.NET页面从加载到呈现的完整生命周期以及事件触发顺序对于优化性能至关重要。源码可能包含了对页面生命周期和事件处理的实例。 11. **Ajax支持**:ASP.NET 2.0虽然没有内置...
1. **页面生命周期**:在ASP.NET 2.0中,每个Web页面都有一个特定的生命周期,包括初始化、加载、验证、呈现和卸载等阶段。通过分析源码,我们可以看到各个事件的触发顺序以及如何在这些阶段中进行自定义处理。 2. ...
最后,ASP.NET 2.0还支持AJAX(Asynchronous JavaScript and XML),通过Partial Page Updates和UpdatePanel,可以在不刷新整个页面的情况下更新部分内容,提高用户体验。简单OA系统可能利用这一特性实现了异步交互...
Validators.zip是在Bet1a,Beta2,RC中自带但在Relase中被移到ASP.NET 2.0补丁包中的AJAX兼容性Validators控件库,在新的ASP.NET2.0补丁包安装之前可以先用此库代替。具体用法祥见Scott老大的Blog ...
9. **Ajax支持**:ASP.NET 2.0引入了UpdatePanel和ScriptManager等组件,实现了部分页面更新,增强了用户体验。 10. **Web服务和SOAP**:ASP.NET允许开发RESTful Web服务或基于SOAP的Web服务,便于与其他系统集成。...
### ASP.NET 2.0数据库操作类SQLHELP详解 在.NET框架中,ASP.NET 2.0是一个重要的版本,它提供了丰富的功能来构建动态Web应用。其中,数据库操作是Web开发中的关键环节,为了简化这一过程,开发人员经常创建自定义...
1. **页面生命周期**:ASP.NET 2.0的页面生命周期包括一系列事件,如初始化、加载视图状态、处理页面事件、渲染等。理解这些事件及其顺序对于编写高效且可控的代码至关重要。 2. **控件模型**:ASP.NET 2.0引入了...
Asp.NET 2.0基于.NET Framework,它的架构包括请求处理管道、页面生命周期、控件模型等组件。每个HTTP请求都会通过IIS(Internet Information Services)进入ASP.NET模块,经过一系列处理后生成响应。 2. **请求...
1. **页面生命周期**:ASP.NET 2.0页面生命周期包括一系列事件,如初始化、加载、验证、呈现和卸载。理解这些事件的顺序对于有效控制页面行为至关重要。 2. **控件事件模型**:ASP.NET 2.0引入了服务器控件,它们...
无序事件允许控件在页面生命周期中的任何时间引发事件,而有序事件则确保控件事件按特定顺序执行。 3. **数据绑定**:ASP.NET 2.0提供了强大的数据绑定机制,如 declarative data binding(声明式数据绑定)和 data...
首先提出需要解决的问题,然后说明实现的过程,最后在ASP.NET2.0中编写具体的软件代码,其中介绍了很多2.0的新特性,如Master,Theme和Skin等,并且大多数章中都涉及到创建三层的系统,包括数据层、业务逻辑层和...
6. **页面生命周期与事件处理**:ASP.NET页面生命周期包括初始化、加载、验证、呈现和卸载等阶段,以及事件触发的顺序。通过分析原代码,开发者能更清楚地理解每个阶段的作用,以及如何在代码中适当地插入处理逻辑。...
### ASP.NET 2.0大数据量分页技术详解 #### 引言 在处理大量数据时,有效地分页浏览是提升用户体验与系统性能的关键因素之一。ASP.NET 2.0 提供了两种分页方式:默认分页和自定义分页。本文将深入探讨这两种方法,...
本文将深入探讨ASP.NET 2.0的关键知识点,包括Web窗体语法、页面事件处理、应用程序规划与设计,以及Session管理中常见的问题。 首先,ASP.NET 2.0 Web窗体语法是开发人员构建用户界面的基础。它允许开发者使用类似...
9. **AJAX支持**:ASP.NET 2.0引入了UpdatePanel和ScriptManager,实现了部分页面刷新,提高了用户体验。 10. **安全性**:ASP.NET 2.0提供了多种安全机制,如身份验证(Forms Authentication)、授权(Role-Based ...
1. **页面生命周期管理**:ASP.NET 2.0中的页面生命周期管理机制更加完善,有助于开发者更好地控制页面的加载顺序以及事件处理流程。 2. **母版页(Master Pages)**:母版页类似于HTML模板,允许开发者定义共享布局...
5. **用户界面**:ASP.NET 2.0提供了一系列的服务器控件,用于在页面上展示和编辑数据。开发者需要学习如何结合数据绑定技术,将后台的数据实时展现给用户,并接收用户的输入。 6. **状态管理**:在Web环境中,由于...
总之,这个"ASP.NET2.0数据库项目案例导航"是指导开发者如何利用ASP.NET 2.0框架进行数据库驱动的Web应用开发的实用资源。通过深入学习和实践这些章节,开发者可以掌握从数据库设计到用户交互的整个流程,提升自己的...
压缩包中的七个.exe文件可能是一系列的交互式教程或者演示程序,按照01至07的顺序逐步引导学习者理解ASP.NET 2.0的基础知识。每个.exe文件可能代表一个独立的章节,涵盖不同的主题,比如第一个文件01.exe可能介绍ASP...