媒介
本文主要给人人引见的是关于Asp.Net中WebForm生命周期的相干内容,分享出来供人人参考进修,下面来看看细致的引见:
一.Asp.Net页面生命周期的观点
当我们在浏览器地址栏中输入网址,回车检察页面时,这时会向服务器端IIS)发送一个request请求,服务器就会推断发送过来的请求页面,当完整辨认 TTP页面处置惩罚顺序类后,ASP.NET运转时将挪用处置惩罚顺序的 ProcessRequest 要领来处置惩罚请求、竖立页面对象。一般情况下,无需变动此要领的完成,由于它是由 Page 类供应的。接下来被竖立页面对象的ProcessRequest要领使页面阅历了各个阶段:初始化、加载视图状况信息和回发数据、加载页面的用户代码以及实行回发服务器端事宜。以后,页面进入显现形式:网络更新的视图状况,生成 HTML 代码并随后将代码发送到输出控制台。末了,卸载页面,并以为请求处置惩罚完毕。个中页面对象ProcessRequest要领 完成的这一系列事宜的处置惩罚历程就是Asp.Net页面生命周期。
二、为何须要相识Asp.Net页面生命周期
由于相识Asp.Net页面生命周期,能够协助开辟者在生命周期的适宜阶段编写顺序,以到达预期的结果,别的假如你想本身开辟自定义控件,就必须熟习页面的生命周期,以便准确举行控件的初始化,运用视图状况数据添补控件的属性,以及运转任何控件行动代码。也就是说只要熟习了从竖立到末了卸载等一系列的事宜,开辟起来才会顺心随手,不会涌现云里雾里的觉得。
三、生命周期阶段
1、请求页面:页请求发作在页生命周期最先之前。
2、最先:在最先阶段,将设置页属性,如Request和Response。在此阶段,页还将肯定请求是回发请求照样新请求,并设置IsPostBack属性。
3、初始化页面:页面初始化时期,能够运用页中的控件,并将设置每一个控件的UniqueID属性。假如当前请求是回发请求,则回发数据还没有加载,而且控件属性值还没有复原为视图状况中的值。
4、加载页面:加载时期,假如当前请求是回发请求,则将运用从视图状况和控件状况恢复的信息加载控件属性。
5、考证:在考证时期,将挪用一切考证顺序控件的Validate要领,此要领将设置各个考证顺序控件和页的IsValid属性。
6、回发事宜处置惩罚:假如请求是回发请求,则将挪用一切事宜处置惩罚顺序。
7、显现页面:在页面显现时期,视图状况将被保留到页面,然后页面将挪用每一个控件,以将其显现的输出供应给页的Response属性的OutputStream。
8、卸载页面:完整显现页、将页发送至客户端并预备抛弃时,将挪用卸载。此时,将卸载页属性(如Response和Request)并实行清算。
四、生命周期的事宜
1、PreInit
运用该事宜来实行以下操纵:
搜检 IsPostBack 属性来肯定是否是第一次处置惩罚该页。
竖立或从新竖立动态控件。
动态设置主控页。
动态设置 Theme 属性。
读取或设置配置文件属性值。
注重:
假如请求是回发请求,则控件的值还没有从视图状况复原。假如在此阶段设置控件属性,则其值能够会在下一事宜中被重写。
2、Init
在一切控件都已初始化且已运用一切表面设置后激发。运用该事宜来读取或初始化控件属性。
3、InitComplete
由 Page 对象激发。运用该事宜来处置惩罚请求先完成一切初始化事情的使命。
4、PreLoad
假如须要在 Load 事宜之前对页或控件实行处置惩罚,请运用该事宜。
在 Page 激发该事宜后,它会为本身和一切控件加载视图状况,然后会处置惩罚 Request 实例包括的任何回发数据。
5、Load
Page 在 Page 上挪用 OnLoad 事宜要领,然后以递归体式格局对每一个子控件实行雷同操纵,云云循环往复,直到加载完本页和一切控件为止。
运用 OnLoad 事宜要领来设置控件中的属性并竖立数据库衔接
6、控件事宜
运用这些事宜来处置惩罚特定控件事宜,如 Button 控件的 Click 事宜或 TextBox 控件的 TextChanged 事宜。
注重:
在回发请求中,假如页包括考证顺序控件,请在实行任何处置惩罚之前搜检 Page 和各个考证控件的 IsValid 属性。
7、LoadComplete
对须要加载页上的一切其他控件的使命运用该事宜。
8、PreRender
在该事宜发作前:
Page 对象会针对每一个控件和页EnsureChildControls。
设置了 DataSourceID 属性的每一个数据绑定控件会挪用 DataBind 要领。有关更多信息,请拜见下面的数据绑定控件的数据绑定事宜。
页上的每一个控件都邑发作 PreRender 事宜。运用该事宜对页或其控件的内容举行末了变动。
9、SaveStateComplete
在该事宜发作前,已针对页和一切控件保留了 ViewState。将疏忽此时对页或控件举行的任何变动。
运用该事宜实行满足以下前提的使命:请求已保留了视图状况,但未对控件举行任何变动。
10、Render
这不是事宜;在处置惩罚的这个阶段,Page 对象会在每一个控件上挪用此要领。一切 ASP.NET Web 服务器控件都有一个用于写出发送给浏览器的控件标记的 Render 要领。
假如竖立自定义控件,一般要重写此要领以输出控件的标记。不过,假如自定义控件只兼并规范的 ASP.NET Web 服务器控件,不兼并自定义标记,则不须要重写 Render 要领。有关更多信息,请拜见开辟自定义 ASP.NET 服务器控件。
用户控件(.ascx 文件)自动兼并显现,因而不须要在代码中显式显现该控件。
11、Unload
该事宜起首针对每一个控件发作,继而针对该页发作。在控件中,运用该事宜对特定控件实行末了清算,如封闭控件特定数据库衔接。
关于页本身,运用该事宜来实行末了清算事情,如:封闭翻开的文件和数据库衔接,或完成日记纪录或其他请求特定使命。
注重
在卸载阶段,页及其控件已被显现,因而没法对相应流做进一步变动。假如尝试挪用要领(如 Response.Write 要领),则该页将激发非常。
以上就是Asp.Net中WebForm的生命周期相干解说的细致内容,更多请关注ki4网别的相干文章!