ASP.NET编程:ASP.NET页面事务:按次与回传详解
java的设计机制:首先产生一个中间码,第二部编译为本地(机器)码。这个机制有很大的缺点。asp.net|详解|页面 1、初始化・当页面被提交哀求第一个办法永久是机关函数。您能够在机关函数内里初始一些自界说属性或工具,不外这时候候由于页面还没有被完整初始化以是几会有些限定。出格地,您必要利用HttpContext工具。以后可使用的工具包含QueryString,Form和Cookies汇合,另有Cache工具。注重:在机关函数里是不同意利用Session的。
・下一个将实行的办法是AddParsedSubObject办法,这个办法将增加一切自力的控件并把页面构成一个控件汇合树,这个办法常常被一些初级的页面模板办理计划(PageTemplateSolutions)重写以便增加页面内容到页面模板(PageTemplate)中一些特别的控件中。这个办法递回使用到一切的页面控件及响应的的每一个子控件,一切的控件都是在这个办法中入手下手最早的初始化。
・页面类中下一个将实行的办法是DeterminePostBackMode。这个办法同意您修正IsPostBack的值及相干的事务。假如您必要从数据库中加载ViewState这个办法将出格有效,由于ViewState只要在IsPostBack为真的情形下才会举行恢复。前往空将会招致强迫实行非回传,前往Request.Form则强迫实行一个回传。除非在特别情形下,不然其实不倡议往操纵这个,由于这个还会影响其他的事务。
・下一个将要实行的办法是OnInit办法,一样平常这是第一个真正被利用的办法。这个办法触发时,一切页面界说中的控件实行初始化,这意味着一切在页面中界说的值使用到响应的控件上。不外,ViewState和传回的值还不会使用到控件上,因而,任何被代码或用户改动的值还没有被恢复到控件上。这个办法一般是最好的创立、重创立静态控件的好中央。
2、恢复及加载
・下一个办法,LoadPageStateFromPersistenceMedium只会在页面被回传的时分才会被实行。假如由于利用Session或自界说存储体例,您修正了前面将要提到的影响ViewState保留体例的办法SavePageStateToPersistenceMedium,则这个办法必要被重写。默许的完成中ViewState是一种Base64格局编码,而且被保留在页面的埋没域中,您可使用这篇文章中说起的办法修正ViewState按以上两种体例保留。注重:这个办法并没有真正加载ViewState到页面或页面控件中。
・当失掉ViewState后,下一个办法LoadViewSate,将以递回的体例恢复ViewState到页面及各个页面控件或子控件中。这个办法实行后,每一个控件都将恢复到上一次的形态,可是用户提交的数据还没有使用到控件上,由于他们不是ViewState的一部分。这个办法次要用于恢复您在其他事务中静态天生的控件的值,他们的值是您手动保留在ViewSate中,而且如今已生效。
・下一个办法是ProcessPostData,这个办法也一样是回传的时分才会被实行,而且不同意被重写,这个是页面基类的公有办法。这个办法经由过程婚配控件的称号恢复响应的用户提交的控件的值,到这一步意味着全部页面都已被完整恢复了。独一要记着的是一切静态控件的创立必需在这个办法之前。这个办法也是纪录前面的改动事务的办法。
・下一个办法是OnLoad办法,一般这是用得最多的办法,由于这个办法是页面熟存期第一个恢复了一切值的中央。年夜多半代码依据判别IsPostBack来决意是不是从头设置控件形态。您也能够在这个办法中挪用Validate而且反省IsValid的值。也能够在这个办法中创立静态控件,而且该控件的一切的办法城市被实行以追受骗前页面的形态包含ViewSate,不外不包含回传的值。
3、事务处置
・下一个办法仍是ProcessPostData,实践上就是前一个办法的另外一次挪用,它仍旧是只在回传的时分实行而且因为是公有办法不成以被重写。假如您是第一次看页面的运转轨迹大概会以为这个办法有些过剩。但实践上这个办法是需要的由于在OnLoad中创立的静态控件也必要他们回传的值。任安在这今后创立的控件将能够失掉他们的ViewState,可是不克不及再失掉他们的回传的值,而且不会触发任何值改动事务(ChangeEvent)。
・下一个办法,RaiseChangedEvents,也是只在回传页面中实行,而且也由于是基类的公有办法一切不克不及被承继。在全部页面熟存期中,是在这儿依据之前的ProcessPostData纪录的控件的值和提交的值是不是分歧来触发值改动事务。您大概必要挪用Validate大概反省IsValid的值。这里并没有出格的申明多个值改动事务的实行前后按次。
・下一个办法,RaisePostBackEvent,一样是由于是基类的公有办法不克不及被承继,一样也是只在回传页面中实行。除非利用了AutoPostBack,否则这是实践提交表单事务实行的中央,出格是按钮大概实在利用javascript提交表单等。假如还没有被手动挪用过而且利用了考证控件,那末Validate会被挪用。注重IE中有个BUG偶然会同意提交但却不触发任何事务。
・下一个办法是OnPreRender,一样平常这是在客户端展示页面之前改动页面及其控件的最初一次时机。您也能够在这个办法内里创立静态控件,而且一切的办法城市被实行以追受骗前页面的形态包含ViewSate,可是公有办法将不会被实行,这意味着不会有回传的值而且不会有事务触发。因为IE中的BUG,这是一个没有事务遇上PostBack的好中央。
4、保留及显现
・下一个办法是SaveViewState,不管是不是是回传页面,均会递回的实行以保留页面及其一切控件的ViewState。ViewState基础上保留一切与界说在aspx中的原始值分歧的值,不论是被代码仍是用户所改动。注重控件值是依据他们在页面的控件树中的地位来保留的,以是假如静态控件厥后加到了毛病的地位将会招致凌乱。
・下一个办法是SavePageStateToPersistenceMedium真实的保留页面的ViewSate。这个办法伴同LoadPageStateFromPersistenceMediumg一同被重写以便保留ViewState到Session或别的自界说数据,而不是用埋没域。这关于低带宽的用户来讲是很有匡助的。而且关于挪动设备来讲,Session是默许设置。上面这篇文章形貌了利用以上两种体例保留ViewState的详细细节。注重在Asp.net中有个Bug:Asp.net请求必需提交__viewstate字段,即便是空的。
・下一个办法是Render办法,该办法递回的创立并发送响应控件的html给扫瞄器。这个办法被一些页面模板计划重写以增加一些通用的页面头与脚而不利用服务器控件,他们老是有一些分外的器材。注重这儿的修正只能利用纯HTML,由于控件在这儿已被天生了。您能够用StringBuilder,StringWriter,HtmlTextWriter捕捉响应的HTML输入。
・最初的办法是OnUnload,这个办法会挪用响应的Dispose办法。这个办法供应时机以便清空该页面中利用的非托管资本,如封闭翻开的文件句柄,之前翻开的数据库毗连等。注重这个办法是在页面已发送到客户端今后实行的,以是它只要影响服务器工具,而且它不会显现在页面的显现轨迹中。这就是页面的保存期,关于每次哀求都是这么运转的。
表1:页面事务总结
办法回传控件
ConstructorAlwaysAll
AddParsedSubObjectAlwaysAll
DeterminePostBackModeAlwaysPage
OnInitAlwaysAll
LoadPageStateFromPersistenceMediumPostBackPage
LoadViewStatePostBackAll
ProcessPostData1PostBackPage
OnLoadAlwaysAll
ProcessPostData2PostBackPage
RaiseChangedEventsPostBackPage
RaisePostBackEventPostBackPage
OnPreRenderAlwaysAll
SaveViewStateAlwaysAll
SavePageStateToPersistenceMediumAlwaysPage
RenderAlwaysAll
OnUnloadAlwaysAll
一个很大的类库。应用程序之所以难以跨平台,在于直接调用了特定平台的接口,而一个巨大的类库,就能极大地减少应用程序对平台的依赖。 比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变。 它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。 可以看作是VC和Java的混合体吧,尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性。 现在的ASP.net分为两个版本:1.1和2.0Asp.net1.1用VS2003(visualstudio2003)编程。Asp.net2.0用VS2005(visualstudio2005)编程。现在一般开发用的是VS2003。 PHP的源代码完全公开,在OpenSource意识抬头的今天,它更是这方面的中流砥柱。不断地有新的函数库加入,以及不停地更新,使得PHP无论在UNIX或是Win32的平台上都可以有更多新的功能。它提供丰富的函数,使得在程式设计方面有着更好的资源。目前PHP的最新版本为4.1.1,它可以在Win32以及UNIX/Linux等几乎所有的平台上良好工作。PHP在4.0版后使用了全新的Zend引擎,其在最佳化之后的效率,比较传统CGI或者ASP等技术有了更好的表现。 JSP/Servlet虽然在国内目前的应用并不广泛,但是其前途不可限量。 能产生和执行动态、交互式、高效率的站占服务器的应用程序。运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写。 对于中小项目来说.net技术是完全可以胜任,但为什么现在大型公司或网站都选择php或java呢?就是因为微软不够开放,没有提供从硬件到应用服务器再到业务应用的整套解决方案。
页:
[1]