部分页呈现概述

部分页呈现可让您无需因回发而刷新整个页面,而仅仅需更新网页上各个已更改的区域。因此,用户不会在每次回发时看到整个页面重新加载,这使得用户能够更加顺畅地与网页进行交互。ASP.NET 使您能够将部分页呈现添加到新的或现有的 ASP.NET 网页,而无需编写客户端脚本。

方案

您可以扩展现有的 ASP.NET 应用程序,并开发结合 AJAX(异步 JavaScript 和 XML)功能的新的应用程序。利用 ASP.NET 中的 AJAX 功能,可以生成丰富的 Web 应用程序,其优点远远多于完全基于服务器的 Web 应用程序。当您要执行以下操作时,请使用 AJAX 功能:

  • 丰富网页的内容,提高响应用户操作的能力,采用类似于传统客户端应用程序的行为,从而使用户在使用网页时感到更加愉悦。

  • 减少整页刷新次数,避免页面闪动。

  • 实现跨浏览器兼容,而无需编写客户端脚本。

  • 执行 AJAX 样式的客户端/服务器通信,而无需编写客户端脚本。

  • 使用 ASP.NET AJAX 控件工具包中的控件和组件。

  • 开发自定义 ASP.NET AJAX 控件。

部分页呈现功能

部分页呈现依赖于 ASP.NET 中的服务器控件和 Microsoft AJAX Library 中的客户端功能。在启用部分页呈现时,不必使用 Microsoft AJAX Library,原因是在您使用 ASP.NET AJAX 服务器控件时,系统会自动提供此功能。不过,您可以使用客户端库中公开的 API 来启用其他 AJAX 功能。

支持部分页呈现的主要 ASP.NET 功能有:

  • 声明性模型,其作用方式类似于 ASP.NET 服务器控件。在许多方案中,您可以仅使用声明性标记来指定部分页呈现。

  • 服务器控件,用于执行部分页更新所需的基础任务。这些控件包括 ScriptManager 控件和 UpdatePanel 控件。

  • ASP.NET AJAX 服务器控件和用于常见任务的 Microsoft AJAX Library 的集成。这些任务包括使用户能够取消回发、在异步回发的过程中显示自定义进度消息,以及确定如何处理并发的异步回发。

  • 部分页呈现的错误处理选项,这些选项使您能够自定义在浏览器中显示错误的方式。

  • 跨浏览器的兼容性,在 ASP.NET 的 AJAX 功能中已内置此功能。只需使用服务器控件即可自动调用正确的浏览器功能。

背景

使用 ASP.NET Web 服务器控件构建的典型网页会执行由用户在网页上的操作(如单击按钮)而触发的回发。作为响应,服务器会呈现新的网页。通常,这会重新呈现回发之间未更改的控件和文本。

通过部分页呈现,您可以异步刷新网页的各个区域,提高网页响应用户的能力。您可以使用 ASP.NET AJAX Web 服务器控件实现部分页呈现,也可以使用 Microsoft AJAX Library 中的 API 编写客户端脚本。

用于部分页更新的服务器控件

若要将 AJAX 功能添加到 ASP.NET 网页,请标识网页上要更新的各个部分。然后,将这些部分的内容放入 UpdatePanel 控件。 UpdatePanel 控件的内容可以是 HTML 或其他 ASP.NET 控件。向网页中添加 UpdatePanel 控件的方式与添加任何其他控件相同。例如,在 Microsoft Expression Web 中,可以将该控件从“工具箱”面板拖到网页上,也可以通过在相应网页的“代码”视图中添加该控件的代码来进行添加。

默认情况下,更新面板内的控件(子控件)引发的回发操作会自动触发异步回发,并导致部分页更新。您还可以指定让更新面板外的控件来导致异步回发并让它们刷新 UpdatePanel 控件的内容。导致异步回发的控件称为触发器。

异步回发行为类似于同步回发。所有服务器网页生命周期事件都会发生,且视图状态和表单数据都会保留。不过,在呈现阶段,仅 UpdatePanel 控件的内容会发送到浏览器,而该网页的其余内容保持不变。

若要支持部分页呈现,必须将 ScriptManager 控件放到相应的网页上。 ScriptManager 控件会跟踪该网页的所有更新面板及其触发器。它会协调服务器上的部分页呈现行为,并确定因异步回发而呈现的网页的各个部分。

有关部分页呈现的详细信息,请参阅 MSDN Library 中的部分页呈现概述 Cc295299.xtlink_newWindow(zh-cn,Expression.40).png(此链接可能指向英文页面)。

另请参阅

任务

教程:如何按规定的时间间隔刷新 UpdatePanel 控件

概念

UpdatePanel 控件
ScriptManager 控件
教程:如何创建包含两个独立更新区域的网页