ASP.NET AJAX客户端生命周期分析(实践篇)

http://tech.ddvip.com   2007年08月25日    社区交流

内容摘要:本文中,我们使用一个具体的例子针对ASP.NETAJAX客户端生命周期中涉及的主要事件引发的顺序给出了追踪分析。但此示例显然有其特殊性且仍嫌粗略,实际开发中宜结合具体问题作针对性分析,以图从根本上掌握ASP.NETAJAX客户端生命周期中引发的主要事件先后顺序及其间的逻辑关系。

  在此,我们以Application对象的init事件的事件处理器ApplicationInit为例。在执行这个事件处理器的过程中,我们又进一步建立了与PageRequestManager对象典型相关联的事件处理器。因为Application对象的init事件只在页面开始生成时创建一次并且在最开始执行,所以,在示例页面启动后,页面最下方的HTML span元素ClientEvents被清空;而其中的第一行显示内容应该被替换为“APP:: Application load.”。

  下图2展示了在联机情况下页面初次启动时的屏幕快照。

ASP.NET AJAX客户端生命周期分析(实践篇)

  图2:示例页面初次启动时的屏幕快照

  接下来,你可以点击其中的按钮以及链接进行细致的事件引发顺序的追踪分析,在此不再赘述。

  三、典型场所下事件发生顺序解析

  实际环境下,事件的触发顺序依赖于页面中使用了什么控件以及发生了什么类型的请求(初始化请求,传统回送或是异步回送)。下面,我们来归纳一下几种常见场所下事件的引发顺序。

  (一)初始请求阶段引发的事件顺序

  在页面的初始请求阶段,仅引发有限的几个客户端事件。假设下面就是初始化请求的情景:

  ◆Web页面中包含一个ScriptManager控件,且该控件的SupportsPartialRendering和EnablePartialRendering属性都置为true。

◆请求为GET类型;

◆服务器能正常响应。

  在这种情况下,将依次发生以下客户端事件:

  1、初始化请求发生给服务器;

2、客户端接收到响应;

3、Application实例引发init事件;

4、Application实例引发load事件。

  请注意,init事件仅在整个页面生命周期过程中的Application实例化时发生一次,它不会再被后来的异步回送所引发。在初始化请求(注意是请求)期间,再没有任何的PageRequestManager事件引发。

来源:51CTO.com    作者:朱先忠    责编:豆豆技术应用

正在加载评论...