热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

asp.net页面生存周期

①页面初始化----------收到客户端的请求,产生相应页面的Page对象,通过Page_Init事件进行page对象及其控件的初始化.②加载视图状态-------ViewSta
①页面初始化----------收到客户端的请求,产生相应页面的Page对象,通过Page_Init事件进行page对象及其控件的初始化.
asp.net页面生存周期②加载视图状态
-------ViewState是存放页面服务器控件的属性和值的集合,客户端通过一个隐藏控件_ViewState把其传到服务器(服务器端也有这么一个变量,该步即为使用服务器端的ViewState,相对于客户端传过来的_ViewState,它是旧版本)________此处不一定对,纯属个人理解.
asp.net页面生存周期
=.继续
asp.net页面生存周期
asp.net页面生存周期③回传数据处理
-------从第一步里的客户请求里找到_ViewState,并提取其中的数据,为页面的控件赋值.
asp.net页面生存周期④页面加载
------------执行Load()事件,感觉是Page_Load(),对象都被实例化,(控件都被赋值了,这里的实例化是指*.cs里的类,好像)
asp.net页面生存周期⑤RaisePostBackChanged事件
---------控件被赋予一个bool值,标识是否被更新了.
asp.net页面生存周期⑥回传事件处理
-------就是客户端触发的那些事件,开始执行.比如按了个Button什么的.所需要执行的具体过程.
asp.net页面生存周期⑦页面预返回阶段
----对控件的属性值,控件树结构做修改的最后机会.
asp.net页面生存周期⑧保存ViewState
-------把服务器控件的属性和值保存在ViewState中(服务器端),供下一次页面请求时使用.所以说相对于下一次该页面的请求,该ViewState是旧版本.
asp.net页面生存周期⑨页面返回阶段
-------把刚刚生成的页面发送到客户端.
asp.net页面生存周期⑩销毁对象
------------调用Dispose事件,把该网页销毁,把其占用的所有资源释放.
asp.net页面生存周期
asp.net页面生存周期
asp.net页面生存周期客户端的一次请求在服务器端的处理过程终于完成了.
!!!!!
asp.net页面生存周期 一.初始化对象 
asp.net页面生存周期二.导入viewstate数据 
asp.net页面生存周期三.用loadpostdata处理postback数据
asp.net页面生存周期四.导入对象
asp.net页面生存周期五.raisepostbackchanged事件 
asp.net页面生存周期六.处理客户端postback事件 
asp.net页面生存周期七.预先呈递对象 
asp.net页面生存周期八.保存viewstate
asp.net页面生存周期九.呈递给html 
asp.net页面生存周期十.销毁对象
asp.net页面生存周期以上就是asp.net页面生命周期中的十个事件。每次我们请求一个asp.net页面时,我们都经历着同样的过程从初始化对象到销毁对象
asp.net页面生存周期
asp.net页面生存周期
asp.net页面生存周期 
asp.net页面生存周期
asp.net页面生存周期Init,
asp.net页面生存周期
asp.net页面生存周期LoadViewState,
asp.net页面生存周期
asp.net页面生存周期LoadPostData,
asp.net页面生存周期
asp.net页面生存周期Load,
asp.net页面生存周期
asp.net页面生存周期RaisePostDataChanged,
asp.net页面生存周期
asp.net页面生存周期RaisePostBackEvent,
asp.net页面生存周期
asp.net页面生存周期PreRender,
asp.net页面生存周期
asp.net页面生存周期SaveViewState,
asp.net页面生存周期
asp.net页面生存周期Render,
asp.net页面生存周期
asp.net页面生存周期Unload
asp.net页面生存周期
asp.net页面生存周期
asp.net页面生存周期asp.net 页面从初始化到卸载事件顺序 
asp.net页面生存周期客户发出POST请求
-〉创建Page派生类,调用构造函数-〉调用Page类的IHttpHandler.ProcessRequest方法-〉激活Page类的Init事件-〉调用Page类的CreateChildControls虚方法-〉从POST变量和VIEWSTATE中还原服务器端控件状态-〉激活Page类的Load事件-〉激活服务器端控件事件-〉激活Page类的PreRender事件-〉调用Page类的Render虚方法-〉调用Page类的RenderChildren虚方法-〉发送HTTP响应给客户端-〉激活Page类的Unload事件-〉丢弃Page派生类的实例。 
asp.net页面生存周期
asp.net页面生存周期
asp.net页面生存周期介绍 
asp.net页面生存周期Asp.net是微软.Net战略的一个组成部分。它相对以前的Asp有了很大的发展,引入了许多的新机制。本文就Asp.net页面的生命周期向大家做一个初步的介绍,以期能起到指导大家更好、更灵活地操纵Asp.net的作用。 
asp.net页面生存周期当一个获取网页的请求(可能是通过用户提交完成的,也可能是通过超链接完成的)被发送到Web服务器后,这个页面就会接着运行从创建到处理完成的一系列事件。在我们试图建立Asp.net页面的时候,这个执行周期是不必去考虑的,那样只会自讨苦吃。然而,如果被正确的操纵,一个页面的执行周期将是一道有效而且功能强大的工具。许多开发者在编写Asp.net的页面以及用户控件的时候发现,如果知道整个过程中发生了什么以及在什么时候发生将对完成整个任务起到很重要的帮助作用。下面我就向大家介绍一下一个Asp.net页面从创建到处理完成过程中的十个事件。同时,也向大家展示如何在这些事件中添加自己的代码以达到预定的效果。 
asp.net页面生存周期一.初始化对象 
asp.net页面生存周期一个页面的控件(以及页面本身)最初应被正确的初始化。通过在你的C#文件的构造函数中声名所有对象(如图1),页面就知道要创建多少对象以及它们的类型。一旦你在你的构造函数中声名了所有的对象,你就可以通过继承类、方法、事件或是属性访问它们。然而,如果你的一些对象是在Aspx文件中指定的一些控件,那么这些控件就没有属性可言了。同时,通过代码访问它们会产生一些意外的错误,因为这些控件实例是没有一个确定的创建顺序的(如果它们是被一起创建的)。还有,你可以通过OnInit来重载初始化事件,图示如下(图1): 
asp.net页面生存周期 
asp.net页面生存周期 
asp.net页面生存周期图1
asp.net页面生存周期 
asp.net页面生存周期二.导入Viewstate数据 
asp.net页面生存周期在初始化事件后,所有控件只可以通过它们的ID被引用访问(因为还没有相应的DOM可使用)。在LoadViewState这个事件中,所有的控件将获得它们的第一个属性:Viewstate属性。这个属性最终将被返回给服务器以判断这个页面是已经被用户访问完毕还是仍然在被用户所访问。Viewstate属性以“名称
/值”对的字符串方式被保存,它包含了控件的文本以及值等信息。该属性被存储在一个隐藏的<input>控件的值属性里,在请求页面时被传递。这种方式比起Asp3.0的维持、判断页面状态的方式有了很大的进步啊。还有,你可以重载LoadViewState事件函数来对相应的控件进行值设定。下图(图2)是一个例子: 
asp.net页面生存周期 
asp.net页面生存周期 
asp.net页面生存周期图2
asp.net页面生存周期 
asp.net页面生存周期三.用LoadPostData处理Postback数据 
asp.net页面生存周期在页面创建的这个阶段,服务器对页面上的控件提交的表单数据(在Asp.net中称postback数据)进行处理。当一个页面提交一个表单时,框架就在每个提交了数据的控件上执行一个IPostBackDataHandler接口操作。然后页面执行LoadPostData事件,解析页面,找到每个执行了IpostBackDataHandler接口操作的控件,并用恰当的postback数据更新这些控件状态。Asp.net是通过用NameValue集中的“名称
/值”对和每个控件的唯一的ID匹配来实现这一操作的。所以,在Asp.net的页面上每个控件必须有一个唯一的ID,不可以出现几个控件共有ID的情况。即使是用户自定义的一些控件,框架也会赋予它们各自唯一的ID的。在LoadPostData事件后,就要执行下面的RaisePostDataChanged事件了。 
asp.net页面生存周期四.导入对象 
asp.net页面生存周期在Load事件中,对象都实例化了。所有的对象第一次被布置在DOM页面(在Asp.net中称控件树)里了并且可以通过代码或是相关的位置被引用。这样,对象就可以很容易的从客户端获得诸如宽度、高度、值、可见性等在Html中的属性值。在Load事件中,当然还有像设置控件属性等操作的发生。这个过程是整个生命周期中最重要、最主要的,你可以通过调用OnLoad来重载Load事件,图示如下(图3): 
asp.net页面生存周期 
asp.net页面生存周期 
asp.net页面生存周期图3
asp.net页面生存周期 
asp.net页面生存周期五.RaisePostBackChanged事件 
asp.net页面生存周期就像在上面提到的那样,这个事件是发生在所有的控件执行了IPostBackDataHandler接口操作并被正确的postback数据更新后的。在这个过程中,每个控件都被赋予一个布尔值来标志该控件有没有被更新。然后,Asp.net就在整个页面上寻找任何已被更新过的控件并执行RaisePostDataChanged事件操作。不过,这个事件是要在所有的控件都被更新了以及Load事件完成后才进行的。这样就保证了一个控件在被postback数据更新前,别的控件在RaisePostDataChanged事件中是不会被手动改变的。 
asp.net页面生存周期六.处理客户端PostBack事件 
asp.net页面生存周期当由postback数据在服务器端引起的事件都完成后,产生postback数据的对象就执行RaisePostBackEvent事件操作。可是会有这种情况,由于一个控件状态的改变使得它将表单返回给服务器或是用户点击了提交按钮使得表单返回给服务器。在这种情况下应该有相应的处理代码来体现事件驱动这一面向对象(OOP)编程原则。由于要满足呈现给浏览器的数据的精确性要求,在一系列postback事件中RaisePostBackEvent事件是最后发生的。 
asp.net页面生存周期在postback过程中改变的控件不应在执行功能函数被调用后更新。也就是说,任何由于一个预期的事件而改变的数据应该在最终的页面上被反映出来。你可以通过修改RaisePostBackEvent函数来满足你的要求,图示如下(图4): 
asp.net页面生存周期 
asp.net页面生存周期 
asp.net页面生存周期图4
asp.net页面生存周期 
asp.net页面生存周期七.预先呈递对象 
asp.net页面生存周期可以改变对象并将改变保存的最后时刻就是这一步――预先呈递对象。这样,你可以在这一步对控件的属性、控件树结构等作出最后的修改。同时还不用考虑Asp.net对其作出任何改变,因为此时已经脱离了数据库调用以及viewstate更新了。在这一步之后,对对象的所有修改将最终被确定,不能被保存到页面的viewstate中了。你可以通过OnPreRender来重载这一步。 
asp.net页面生存周期八.保存ViewState 
asp.net页面生存周期所有对页面控件的修改完成后viewstate就被保存了。对像的状态数据还是保留在隐藏的
<input>控件里面,呈现给Html的对象状态数据也是从这里取得的。在SaveViewState事件中,其值能被保存到viewstate对象,然而这时在页面上控件的修改却不能了。你可以用SaveViewState来重载这一步,图示如下(图5): 
asp.net页面生存周期 
asp.net页面生存周期 
asp.net页面生存周期图5
asp.net页面生存周期 
asp.net页面生存周期九.呈递给Html 
asp.net页面生存周期运用Html创建给浏览器输出的页面的时候Render事件就发生了。在Render事件过程中,页面调用其中的对象将它们呈递给Html。然后,页面就可以以Html的形式被用户的浏览器访问了。当Render事件被重载时,开发者可以编写自定义的Html代码使得原先生成的Html都无效而按照新的Html来组织页面。Render方法将一个HtmlTextWriter对象作为参数并用它将Html在浏览器上以网页的形式显示。这时仍然可以做一些修改动作,不过它们只是客户端的一些变化而已了。你可以重载Render事件,图示如下(图6): 
asp.net页面生存周期 
asp.net页面生存周期 
asp.net页面生存周期图6
asp.net页面生存周期 
asp.net页面生存周期十.销毁对象 
asp.net页面生存周期在呈递给Html完成后,所有的对象都应被销毁。在Dispose事件中,你应该销毁所有在建立这个页面时创建的对象。这时,所有的处理已经完毕,所以销毁任何剩下的对象都是不会产生错误的,包括页面对象。你可以重载Dispose事件,见图6。 
asp.net页面生存周期全文总结 
asp.net页面生存周期以上就是Asp.net页面生命周期中的十个事件。每次我们请求一个Asp.net页面时,我们都经历着同样的过程:从初始化对象到销毁对象。通过了解Asp.net页面的内部运行机制,我相信大家在编写、调试代码的时候会更加游刃有余的。 

推荐阅读
  • HTML中用于创建表单的标签是什么
    本文将详细介绍HTML中用于创建表单的标签及其基本用法,包括表单的主要特性和常用的属性设置。如果您正在学习HTML或需要了解如何在网页中添加表单,这将是一个很好的起点。 ... [详细]
  • 本文探讨了一个项目中遇到的挑战,即如何通过技术手段解决不同菜单项触发时,跨域IFrame页面的高度自适应问题。通过创建中介页面和利用JavaScript与Cookie机制,实现无缝的用户体验。 ... [详细]
  • 实现如下:可以点击delete删除信息,并且可以通过添加新员工功能可以把新员工加到上一个表格中。其中,css代码如下:CH ... [详细]
  • 本人最近在学习python,在看了一些教程后,用python写了一个简单的云音乐播放器,下面把主要代码贴上来,其中用到了gi ... [详细]
  • 本文介绍如何通过自定义控件LoadLayout实现ListView的上拉加载更多和下拉刷新功能。LoadLayout支持上拉加载,而下拉刷新则利用了android.support.v4.widget.SwipeRefreshLayout组件。 ... [详细]
  • Android 手机安全应用首屏布局设计
    本文详细介绍了如何构建一个功能丰富的手机安全应用的首个导航界面布局。通过实例代码和效果展示,帮助开发者快速理解和实现相关功能。 ... [详细]
  • 本文介绍如何利用Python中的Epoll机制构建一个高效的Web服务器,该服务器能够处理多个并发连接,并向每个连接的客户端返回预定义的响应文本。通过使用Epoll,服务器可以实现高性能的I/O多路复用。 ... [详细]
  • 下面根据配置文件,来说明一些底层与webservices的关系:回顾一下servlet的映射模式。我们知道,servlet是从javax.servlet.http.HttpServ ... [详细]
  • 统计报表模板及其实现方法
    本文介绍两个实用的统计报表模板,并提供如何将这些静态模板转换为动态JSP页面的方法。同时,文中附上了详细的代码示例。 ... [详细]
  • 转载网址:http:www.open-open.comlibviewopen1326597582452.html参考资料:http:www.cocos2d-ip ... [详细]
  • 本文介绍了jQuery的基本使用方法及AJAX技术的基础知识,包括选择器、事件处理、DOM操作、动画效果等核心功能,以及如何利用AJAX实现页面的部分刷新。 ... [详细]
  • 探讨在数据库中存储URL时,删除尾部斜杠的安全性和潜在影响,以及如何确保URL的一致性。 ... [详细]
  • 本文介绍了一个基于 div 标签设计的宿舍管理系统登录页面,包括用户身份选择、记住我功能以及错误信息提示。 ... [详细]
  • Android实战:使用ProgressBar与AsyncTask实现数据异步加载
    本文介绍如何利用ProgressBar和AsyncTask在Android应用中实现数据的异步加载。包括加载数据的不同状态下的UI展示,如加载中、加载成功及加载失败时的界面处理。 ... [详细]
  • java学习日记对JFrame的操作
    设置背景图片、添加音乐、监控键盘、改变字体风格等等!importjava.applet.Applet;importjava.applet.AudioClip;importjava. ... [详细]
author-avatar
美君朝龙冰盛
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有