首页 / 脚本样式 / Ajax / ASP.NET AJAX:UpdatePanel提示和技巧
ASP.NET AJAX:UpdatePanel提示和技巧2011-08-23 MSDN Jeff Prosise目录更新突出显示取消 UpdatePanel 更新多个 UpdatePanel不使用 UpdatePanel 更新Web Service != SOAP 和 XML不论好坏,UpdatePanel 控件都是 ASP.NET AJAX 社区所喜爱的。我说“好”,是因为 UpdatePanel 使部分页面呈现变得相当 简单,而说“坏”,是因为它的简便和易用性是以效率和令人啼笑皆非的带宽为代价的。UpdatePanel 可以为一般的网页带来 AJAX 神奇的好处,但是它不能提供我们与 AJAX 正常关联 的高效性。例如,您是否知道,当 UpdatePanel 控件对服务器执行异步 AJAX 回调以更新其内容时,这 个请求包含了常规 ASP.NET 回发所包含的一切,其中还包括视图状态呢?大多数开发人员会以为 AJAX 取消了视图状态。而 UpdatePanel 的 AJAX 品牌却并非如此。如果您准备使用 UpdatePanel 控 件,您需要清楚您在准备干什么。在许多情况下,从性能的角度而言,应用程序最好是不使用 UpdatePanel,而是使用对 WebMethods 或页面方法的异步调用。这样做可能会大幅度降低网络传输中的 数据量。但是,它也是一个根本转变,在这里 UI 更新需要由开发人员使用该页面上的 JavaScript 来 进行显式处理。此外,ASP.NET AJAX 论坛上到处都有关于自定义 UpdatePanel 的提问。其实, 只要您了解为 UpdatePanel 提供客户端支持的 Microsoft® AJAX Library 中的 PageRequestManager、JavaScript 类,这里面许多问题就可以迎刃而解。既然已经提供了 ASP.NET AJAX,我想进一步检查一下 UpdatePanel,从而进一步了解您可以如何对其进行自定义和优化 ,甚至在没有它的情况下如何运行。这恰恰也是本期专栏包含的全部内容。更新突出显示有时候您无法帮助 Microsoft 的开发人员,而只能对他们表示遗憾。如果他们不能将工作做得足够 好,就会遭到公众的抨击。然而,有时候他们的工作做得很出色,也会遭到抨击。例如,我最近收到了 一位客户的电子邮件,抱怨 ASP.NET AJAX UpdatePanel 运行得有点过头了。UpdatePanel 使 ASP.NET 页面回发到服务器,并将它变为流畅、无闪烁的更新时出现闪光和闪烁变 得极其简单。UpdatePanel 可以通过将回发转换成异步回调(XML-HTTP 请求),以及使用客户端上的 JavaScript 以刷新由 UpdatePanel 控件封装的页面的一部分来发挥它的魔力。闪光和闪烁会消失,因 为浏览器不会将该页面重新绘制成与它在回发期间的一样。客户的抱怨是,用户有时候不会注意到页面的那个部分已经更新了新内容。他的问题很简单: ASP.NET AJAX 团队的工作人员是否能使 UpdatePanel 闪烁再多一点,以便用户不会错过重要的更新?不幸的是,ASP.NET AJAX 团队可能对制造 UpdatePanel 闪烁没什么兴趣。毕竟,消除闪烁才是发明 UpdatePanel 的初衷。但值得高兴的是,您可以在浏览器中使用 AJAX 的一些神奇功能,以吸引对已更 新的 UpdatePanel 的注意。秘诀在于 Microsoft AJAX Library(由客户端一半的 ASP.NET AJAX 组成 的 JavaScript 类的库)中的 Sys.WebForms.PageRequestManager 类。PageRequestManager 可以管理 由 UpdatePanel 启动的异步回调。它还负责在异步回调完成后更新 UpdatePanel 内的内容。