科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件ASP.NET AJAX客户端生命周期分析(理论篇)(2)

ASP.NET AJAX客户端生命周期分析(理论篇)(2)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文中,我们将对ASP.NET AJAX客户端生命周期作全面解析。上篇从理论上对该生命周期中的重要事件给出分析;下篇将以一个实际案例对ASP.NET AJAX客户端生命周期中主要关联事件的发生顺序作深入探讨。

作者:朱先忠 来源:51CTO.com 2007年8月31日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

七、Application和PageRequestManager相关事件深度解析

为了方便起见,我们以表格形式举例出了Application和PageRequestManager类相关的客户端事件(所有这些事件都是我们可以在支持AJAX ASP.NET技术的页面中加以操纵的)。至于事件引发的先后顺序将在后面的示例中分析。

事件

解释

Init(初始化事件)

在加载完所有脚本但创建任何一个对象之前引发该事件。如果你在开发一个客户端组件,那么,这个init事件为你提供了一个在页面生命周期内把该组件添加到页面的时机。此后,该组件即可被在页面生命周期内的其它组件及脚本所调用。如果你是网页开发人员,那么在大多数的情况之下,建议你使用load事件来替代init事件进行有关处理。

【注】init事件只在页面开始生成时创建一次。后来的部分页面刷新将不会再引发此事件。

Load(加载事件)

该事件在加载完所有脚本并且在该程序中的对象(使用$create创建)全部初始化结束后引发。该事件针对所有到服务器的回送(也包括异步的回送)都将被引发。

如果你是网页开发人员,你可以创建一个名为pageLoad的函数,该函数会自动为load事件提供一个处理器函数。注意,这个pageLoad处理器是在所有load事件中的事件处理器(通过add_load方法添加)调用之后被调用的。

此外,load事件仅需要一个Sys.ApplicationLoadEventArgs对象作为参数。你可以通过该参数来决定页面经局部更新后是否正是被刷新,还可以确定在上一个load事件引发后创建了哪些组件。

Unload(卸载事件)

在释放所有对象和浏览器中的window.unload事件发生之前引发此事件。

如果你是网页开发人员,你可以创建个名为pageUnload的函数;之后,系统会自动为unload事件提供一个事件处理器函数。这个事件恰好是在浏览器卸载页面之前被调用。因为是最后一次机会,所以在该事件发生期间,我们应当释放由代码占用的全部资源。

propertyChanged(属性改变事件)

当某组件的属性发生改变时引发该事件。Application对象是从Component类中继承这个事件的。典型情况下,该事件仅由组件开发人员使用;他在设置某个属性相应的set访问器的过程中时调用Sys.Component.raisePropertyChange方法时才引发。

此事件需要一个使用Sys.applicationLoadEventArgs对象作为参数。

Disposing(释放事件)

在释放Application实例时引发该事件。该事件是由Application对象从Component类中继承来的。

initializeRequest(初始化请求事件)

该事件发生在一个异步请求开始之前。你可以通过使用该事件来取消一个传统的回送而让一个异步回送获得优先执行权。

该事件仅使用一个Sys.WebForms.InitializeRequestEventArgs对象作参数。通过这个对象我们可以操作引发回送的元素甚至是Request对象。该事件还暴露了一个cancel属性。如果你设置cancel的值为true,那么,一个新的回送将被撤销。

beginRequest(开始请求事件)

该事件发生在一个异步请求开始但向服务器实现回送之前。该事件是在一个回送到服务器的异步回送开始前引发。如果当前已经存在了一个回送进程,则会被强硬地停止(通过abortPostBack方法)。你可以使用该事件来设置请求的头部信息或在页面中显示一个动画以提示该请求正在进行中。

该事件需要一个Sys.WebForms.BeginRequestEventArgs对象作为参数。我们也可以通过这个对象来操作引发回送的元素甚至是Request对象。

pageLoading(页面正在加载事件)

在接收一个来自服务器端的异步回送响应之后,且在页面中任何内容被更新之前引发此事件。在实际开发中,我们可以使用该事件来为需要更新的内容提供某种定制的过渡效果。

该事件需要一个Sys.WebForms.PageLoadingEventArgs对象作为参数。通过该对象,我们可以从最近的异步回送返回的结果中了解到页面中的哪些面板元素(例如divspan等)将被删除和更新。

pageLoaded(页面加载完成事件)

在所有页面内容刷新之后(无论是经同步回送还是异步回送的结果)引发此事件。在同步回送时,只能创建面板元素;但在异步回送时,可以创建和更新面板元素。我们可以使用该事件来管理针对需要更新的内容的某种定制过渡效果。

该事件需要一个Sys.WebForms.PageLoadedEventArgs对象作为参数。该对象提供了关于最近回送时哪些面板元素被更新和创建的有用信息。

endRequest(结束请求事件)

在响应完一次异步回送并且页面得到更新后,或在请求过程中发生了错误时引发此事件。如果发生了某个错误,页面将不会被更新。因此,我们可以通过这个事件来提供某种定制的错误提示信息给访问者或把此信息记录到错误日志中。

该事件需要一个Sys.WebForms.EndRequestEventArgs对象作为eventargs参数。该对象提供了有关被引发的错误和错误是否被处理的一些有用的信息;而且我们可以通过此对象操作Response对象。

八、小结

在本篇中,我们将对ASP.NET AJAX客户端生命周期中的重要事件作详尽列举,并给出典型的适用场合。在接下来的下篇中,我们分析一个实际的简单案例,并试图对ASP.NET AJAX客户端生命周期中主要关联事件的发生顺序作深度解析。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章