AspNet2.0页面生命周期

ASP.NET页面间数据传递的几种方法介绍 Web页面是无状态的,服务器对每一次请求都认为来自不同用户,因此,变量的状态在连续对同一页面的多次请求之间或在页面跳转时不会被保留。在用ASP.NET 设计开发一个Web系统时, 遇到一个重要的问题是如何保证数据在页面间进行正确、安全和高效地传送,Asp.net 提供了状态管理等多种技术来解决保存和传递数据问题,以下来探讨.NET 下的解决此问题的各种方法和各自的适用场合。 一、ASP.NET页面间数据传递的各种方法和分析 1.使用Querystring 方法 QueryString 也叫查询字符串, 这种方法将要传递的数据附加在网页地址(URL)后面进行传递。如页面A.aspx 跳转到页面B 立即下载

AspNet2.0页面生命周期 

页面框架通过如下过程处理aspx文件请求:
    1:解析aspx文件,并创建一个控件树;
    2:使用控件树动态实现一个继承自Page类的类或者控件 ;
    3:动态编译类;
    4:缓存编译类,以备后用;
    5:动态创建一个编译类的实例。页面开始启动生命期,在这个过程中,页面将通过生命周期的不同阶段;=========================================================
页面经历了如下阶段【其中一些阶段标记为仅仅回传,是说只有在被回传到服务器时,页面才经历这些阶段】:

01:页面首先从QueryString或者Request对象的Form集合中获得回传数据。

02:页面检测回传数据集合(NameValueCollection,Form或者QueryString)是否包含一个键为_CallBackId的项。如  果存在,那么设置其Boolean属性IsCallBack为True,以便通过AspNet客户端回调机制,标明页面已经回传到服务器。

03:预初始化(PreInit):
  在页面生命周期的预初始化阶段执行如下操作:
   a:调用OnPreInit方法引发PreInit事件。
   b:利用App_Themes目录中的内容初始化主题,以动态实现一个PageTheme类型的类,
    编译该类,并创建一个编译类的实例,接着将实例赋值给它的PageTheme属性值
   c:应用母版页

04:初始化(Init):
  在页面生命周期的初始化阶段执行以下操作
   a:递归初始化Controls集合中的控件。初始化包括设置这些控件的属性,
    例如:Page,Id和NameContainer等
   b:递归应用控件皮肤
   c:调用OnInit方法以引发自身的Init事件,接着递归调用子控件的OnInit方法来引发它们的Init事件
   d:调用自身的TrackViewState方法来启动自身的视图状态跟踪,接着递归调用子控件
    的TrackViewState方法来启动它们的视图状态跟踪。

05:完成初始化(InitComplete):
  页面调用OnInitComplete方法来引发InitComplete事件。该事件标明了初始化阶段的结束。
此时,页面Controls集合的所有控件都被初始化了。


06:加载控件状态(Load Control State)[PostBack Only]:
  页面递归调用Control集合中控件的LoadControlState方法,这些控件已经调用了Page类
的RegisterRequiresControlState方法,以使用它们的控件状态。

07:加载视图状态(Load View State)[PostBack Only]:
  页面首先调用自身的LoadViewState方法,接着递归调用Controls集合控件的LoadViewState方法,以允许它们加载它们的已经保存的视图状态。

08:加载回传数据(Load Post Data)[PostBack Only]:
  页面调用实现IPostBackDataHandler接口的控件的LoadPostData方法,并将回传数据传递给该方法。每个控件的LoadPostDate方法都必须访问回传数据,并据此更新相应的控件属性。
例如:TextBox控件的LoadPostData方法将文本框的新值设置为TextBox控件的Text属性值。

09:预加载(PreLoad):
  页面调用OnPreLoad方法以引发PreLoad事件。该事件表示页面生命周期将进入加载阶段。

10:加载(Load):
  页面首先调用自身的OnLoad方法以引发自身的Load事件,接着递归调用Controls集合中控件的OnLoad方法以引发它们的Load事件。页面开发人员可以为Load事件注册回调,那么就可以通过编程将子控件添加到页面的Controls集合中。

11:加载回传数据(Load Post Data)[PostBack Only Second Try]:
  页面调用控件的LoadPostBack方法。这些控件如果实现了IPostBackDataHandler接口,那么在加载阶段,它们已通过编程添加到Controls集合中。

12:引发回传数据修改事件(Raise Post Data Changed Event)[PostBack Only]:
  页面调用控件的RaisePostDataChangeEvent方法,这些控件的LoadPostData方法返回true。
RaisePostDataChangeEvent方法引发了回传数据修改事件。例如:当文本框的新值与旧值
不同时,那么TextBox控件将引发该事件。

13:引发回传事件(Raise PostBack Event)[PostBack Only]:
  页面调用控件的RaisePostEvent方法,这些控件相关的Html元素用于提交表单。例如,Button控件的相关Html元素将页面回传到服务器。控件的RaisePostBackEvent方法必须将回传事件映射到一个或多个服务器事件。例如,Button控件的RaisePostBackEvent方法将事件映射到了服务器端事件Command和Click上。

14:完成加载(Load Complete):
  页面调用OnLoadComplete方法来引发LoadComplete事件,这表示所有加载活动,包括加载回传数据,以及引发回传数据修改事件,并以更新控件自身的活动都完成了。

15:引发回调事件(Raise CallBack Event)(PostBack And CallBack Only):
  页面调用控件的RaiseCallBackEvent方法。该控件可使用AspNet客户端回调机制来允许客户端方法(例如JavaScript函数)调用服务器端方法,而无需将整个页面回传给服务器。
RaiseCallBackEvent方法必须调用服务器端方法。如果页面的回传使用了客户端回调机制,那么页面将不会执行剩余的页面生命周期阶段。

16:预呈现(PreRender):
  在页面生命周期这个阶段执行一下操作。
   a:调用EnsureChildControls方法来确保在页面进入呈现阶段之前,创建其子控件。
   b:调用自身的OnPreRender方法来引发PreRender事件。
   c:递归调用Controls集合中控件的OnPreRender方法,以引发它们的PreRender事件。

17:预呈现完成(PreRender Complete):
  页面调用OnPrerenderComplete方法来引发PreRenderComplete事件,这表示所有预呈现活动完成了。

18:保存控件状态(Save Control State):
  页面递归调用Controls集合中控件的SaveControlState方法。这些控件已经调用了Page类的RegisterRequiresControlState方法来保存它们的控件状态。

19:保存视图状态(Save View State):
  页面首先调用自身的SaveViewState方法,然后调用Controls集合中的SaveViewState方法,以允许它们来保存其视图状态。

20:保存状态完成(Save View Complete):
  页面调用OnSaveStateComplete方法以引发SaveStateComplete事件,这表示所有状态保存活动都完成了。

21:呈现:
  在页面生命周期的这个阶段执行一下操作。
   a:创建一个HtmlTextWriter类实例,该实例封装了输出响应流
   b:调用RenderCOntrol方法,并将HtmlTextWriter实例传递给该方法。
  RenderControl方法递归调用子控件的RenderControl方法,以便允许每个控件能够呈现其
Html标记文本。子控件的Html标记文本组成了最终发送给客户端浏览器的Html标记文本。

全球最大光伏电池缺陷异常检测数据集PVELAD【发布】 下载地址 1:GitHub - binyisu/PVEL-AD 下载地址 2:http://aihebut.com/col.jsp?id=118 下载地址 3:NAVEDownload 竞赛测试系统:Photovoltaic cell anomaly detection | Kaggle 一、简介 PVEL-AD 数据集又叫做EL2021数据集是用于对光伏电池异常缺陷检测方法进行基准测试的数据集,重点是光伏电池工业检测。PVEL-AD包含 36,543 张具有各种内部缺陷和异构背... 阅读详情

相关推荐

Mac M系列芯片用户必看:UTM虚拟机跑麒麟V10安装达梦DM8全流程避坑指南

本文为Mac M系列芯片用户提供了一份详尽的UTM虚拟机安装麒麟V10并部署达梦数据库DM8的实战指南。文章深入分析了在ARM架构下选择UTM而非其他虚拟化方案的原因,并详细拆解了从系统安装、SPICE工具配置、麒麟V10深度调优到DM8安装与避坑的全流程,重点解决了ARM环境下的兼容性与配置难题,帮助开发者高效搭建国产化开发测试环境。

ss78901的博客 940

页面生命周期

页面的生命周期包括2个系列的事件,首次加载 和 页面回传的过程。首次加载页面期间所包含的步骤 1运行构造函数,对于页面或页面上的任何控件,这是生命周期的第一步。 2确定回传模式。是第一次加载,或者自回传,还是跨页面回传 3预初始化。为了在第一个页面初始化之前确定目标(PreInit是生命周期中的第一个事件由OnPreInit方法处理) 4初始化。在初始化阶段构建控件树,可以通过...

dizaodou0090的博客 182

Seafile搭建以及onlyoffice在线办公

部署seafile docker-compose.yml 如下: 参考此篇文章 version: '2.0' services: db: image: mariadb:10.1 container_name: seafile-mysql environment: - MYSQL_ROOT_PASSWORD=db_dev # mysql root的密码,同时修改 seafile的DB_ROOT_PASSWD与这个一致 - MYSQL_LOG_CONSOLE

dwdcth的专栏 4659

Activity生命周期及页面跳转(Intent)、数据传递

Activity 用户与程序的交互是通过Activity完成的,Activity负责管理Android应用程序的登陆界面。 1. Activity 的创建 在程序包处单击右键,选择New → Activity → Empty Activity 后会弹出Customize the Activity界面 Activity Name :用于输入Activity名称。 Layout Name:用输入布...

菜菜的博客 3342

[机器学习] 第二章 模型评估与选择 2.ROC:roc_curve原理及源代码详解

代码见:https://github.com/Carrie-Yi/machine_learning/tree/main/roc_curve

心宝的博客 1495

小红书直播弹幕采集

本文主要介绍小红书直播间弹幕的采集,便于进行直播数据监控与直播数据进行分析。

tdl320721的博客 2544

微信小程序详解——页面之间的跳转方式【路由】和参数传递

微信小程序拥有web网页和Application共同的特征,我们的页面都不是孤立存在的,而是通过和其他页面进行交互,来共同完成系统的功能。今天我们来研究小程序页面之间的跳转方式。 1.

qq_26585943的博客 7万+

labview高低拼接的理解

计算机的一个字节由8位组成,无符号的8位整形表示的范围为0~255,范围太小了,所以用双字节,即16位整形表示更大范围的数字0 ~65535。2.labview中的高低拼接实质是高8位字节左移8位与低8位字节相加,结果是双字节整形。

qwerqwerdhr的博客 839

Activity生命周期和Activity页面之间数据传递

1、什么是Activity?     Android四大基本组件:     Activity(手机屏幕)     BroadcastReceiver(广播接受者)     Services服务       ContentProvider(内容提供者) 2,、调用生命周期方法:     按home键     和打开另外一个窗口,再按返回键     横竖屏切换     Act

XHui_Lin的博客 996

5、Visual Studio Code:强大的编码与文件管理功能

本文详细介绍了 Visual Studio Code 的强大编码与文件管理功能,涵盖代码导航、引用查找、符号重命名、实时代码分析、IntelliCode 提示、文件和文件夹操作等内容。通过功能对比、流程图和实际开发案例,展示了 VS Code 如何提升开发效率和代码质量,适用于各类编程语言和项目开发场景。

water的专栏 134

GEE:面对对象土地利用分类(结合SNIC、GLCM 和机器学习算法)

本文将介绍在Google Earth Engine中结合SNIC、GLCM和机器学习算法的的土地利用/土地覆盖(LULC)分类方法。结果如下图所示,

养乐多的博客 5619

HTML页面生命周期详解

在使用vue的时代本次项目有个需求,就是需要在静态资源未加载时获取当前页面的访问路径,所以需要对html页面的生命周期要有所了解。本次讲讲HTML页面的生命周期事件,希望对大家有所帮助。如果文中有不对、疑惑的地方,欢迎在评论区留言指正🌻页面生命周期事件:当 DOM 准备就绪时,document 上的 DOMContentLoaded 事件就会被触发。在这个阶段,我们可以将 JavaScript 应用于元素。诸如或之类的脚本会阻塞 DOMContentLoaded,浏览器将等待它们执行结束。

码农键盘上的梦 1441

在 SAP S/4HANA Cloud Public Edition 中掌控 ABAP 生命周期管理:One-Off、Multi-Off 与 Scalable Delivery 的落地方法论

本文系统梳理了SAP S/4HANA Cloud Public Edition中ABAP扩展开发的三种生命周期管理模式:One-Off适用于企业内部扩展,通过Import Collection在三系统间流转;Multi-Off面向少量客户交付,基于gCTS和Git实现不连接系统间的传输;Scalable Delivery则将扩展产品化为add-on,支持规模化分发。文章结合RAP、OData等实际开发场景,对比分析了各模式的特点与适用边界,为国内团队提供了符合Public Cloud要求的开发与交付实践建议

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1496

AspNet2.0页面生命周期 [转]

AspNet2.0页面生命周期 页面框架通过如下过程处理aspx文件请求: 1:解析aspx文件,并创建一个控件树; 2:使用控件树动态实现一个继承自Page类的类或者控件 ; 3:动态编译类; 4:缓存编译类,以备后用; 5:动态创建一个编译类的实例。页面开始启动生命期,在这个过程中,页面将通过生命周期的不同阶段;========================...

weixin_30498807的博客 131

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

AspNet2.0页面生命周期的各个事件细节

页面框架通过如下过程处理aspx文件请求: 1:解析aspx文件,并创建一个控件树; 2:使用控件树动态实现一个继承自Page类的类或者控件 ; 3:动态编译类; 4:缓存编译类,以备后用; 5:动态创建一个编译类的实例。页面开始启动生命期,在这个过程中,页面将通过生命周期的不同阶段;========================================================= 页面经历了如下阶段【其中一些阶段标记为仅仅回传,是说只有在被回传到服务...

资料汇总整理-仅供个人学习使用 274

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

AspNet2.0页面生命周期(转)

页面框架通过如下过程处理aspx文件请求: 1:解析aspx文件,并创建一个控件树; 2:使用控件树动态实现一个继承自Page类的类或者控件 ; 3:动态编译类; 4:缓存编译类,以备后用; 5:动态创建一个编译类的实例。页面开始启动生命期,在这个过程中,页面将通过生命周期的不同阶段;===========================...

weixin_30586085的博客 167

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

上一篇: 应用框架开发入门
下一篇: 企业应用架构模式 之 领域逻辑模式
SysBug
博客等级 码龄22年 3粉丝 14原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值