ScriptManager 控件管理支持 AJAX 的 ASP.NET 网页的客户端脚本。默认情况下,ScriptManager 控件会向页面注册 Microsoft AJAX Library 的脚本。这将使客户端脚本能够使用类型系统扩展并支持部分页呈现和 Web 服务调用这样的功能。
必须在页上使用 ScriptManager 控件,以启用下列 ASP.NET 的 AJAX 功能
当页包含一个或多个 UpdatePanel 控件时,ScriptManager 控件将管理浏览器中的部分页呈现。该控件与页生命周期进行交互,以更新位于 UpdatePanel 控件内的部分页。
ScriptManager 控件的 EnablePartialRendering 属性确定某个页是否参与部分页更新。默认情况下,EnablePartialRendering 属性为 true。因此,默认情况下,当向页添加 ScriptManager 控件时,将启用部分页呈现。
处理部分页呈现错误
在部分页呈现期间,可通过执行以下操作来处理错误:
* 需要设置 AllowCustomErrorsRedirect 属性。当异步回发过程中发生错误时,此属性将决定如何使用 Web.config 文件的自定义错误部分。
* 处理 ScriptManager 控件的 AsyncPostBackError 事件,该事件在异步回发期间出现页错误时引发。
* 设置 AsyncPostBackErrorMessage 属性,该属性是发送到浏览器的错误消息。
使用类型系统扩展
Microsoft AJAX Library 可向 JavaScript 添加类型系统扩展,以提供命名空间、继承、接口、枚举、映射以及字符串和数组的 Helper 函数。这些扩展可以在客户端脚本中提供与 .NET Framework 的功能类似的功能。它们使您能够以结构化方式编写支持 AJAX 的 ASP.NET 应用程序,这将增强可维护性并可以更容易地添加功能和对功能进行分层。向 ASP.NET 网页添加 ScriptManager 控件时会自动包含类型系统扩展,以便您可以在客户端脚本中使用该库。
注册自定义脚本
使用 ScriptManager 控件可管理您为参与部分页更新的控件创建的资源。这些资源包括脚本、样式、隐藏字段和数组。ScriptManager 控件的 Scripts 集合中针对浏览器中可用的每个脚本包含一个 ScriptReference 对象。可以以声明方式或编程方式指定脚本。
ScriptManager 控件还公开一些注册方法,您可使用这些方法以编程方式管理客户端脚本和隐藏字段。当为支持部分页更新的脚本或隐藏字段注册时,必须调用 ScriptManager 控件的注册方法。(若要为部分页更新不需要的脚本注册,请使用 ClientScriptManager 类的方法。)
注册 Web 服务
若要为想要从支持 AJAX 的 ASP.NET 页调用的 Web 服务注册,请通过将 Web 服务添加到 ScriptManager 控件的 Services 集合中来为其注册。ASP.NET AJAX Framework 为 Services 集合中的每个 ServiceReference 对象生成一个客户端代理对象。这些代理类及其强类型成员将简化从客户端脚本使用 Web 服务的过程。
可以以编程方式将 ServiceReference 对象添加到 Services 集合,以便在运行时为 Web 服务注册。
从客户端脚本使用身份验证、配置文件和角色服务
Microsoft AJAX Library 包含用于从 JavaScript 直接调用 ASP.NET 2.0 Forms 身份验证、配置文件和角色应用程序服务的代理类。如果要使用自定义身份验证服务,则可通过使用 ScriptManager 控件来为该服务注册。
ScriptManagerProxy 类
只能向页添加 ScriptManager 控件的一个实例。该页可以直接包含该控件,也可以将其间接包含在嵌套的组件中,如用户控件、母版页的内容页或嵌套的母版页。如果页已包含 ScriptManager 控件,但嵌套的组件或父组件需要 ScriptManager 控件的其他功能,则该组件可以包含 ScriptManagerProxy 控件。例如,ScriptManagerProxy 控件使您能够添加特定于嵌套的组件的脚本和服务。
方案
必须在页上使用 ScriptManager 控件,以启用下列 ASP.NET 的 AJAX 功能
- Microsoft AJAX Library 的客户端脚本功能和要发送到浏览器的任何自定义脚本。
- 部分页呈现,允许单独刷新页面上的区域而无需回发。ASP.NET UpdatePanel、UpdateProgress 和 Timer 控件需要 ScriptManager 控件才能支持部分页呈现。
- Web 服务的 JavaScript 代理类,允许您使用客户端脚本来访问 Web 服务和 ASP.NET 页中特别标记的方法。它通过将 Web 服务和页方法作为强类型对象公开来达到此目的。
- JavaScript 类,用于访问 ASP.NET 身份验证、配置文件和角色应用程序服务。
背景
当页包含一个或多个 UpdatePanel 控件时,ScriptManager 控件将管理浏览器中的部分页呈现。该控件与页生命周期进行交互,以更新位于 UpdatePanel 控件内的部分页。
ScriptManager 控件的 EnablePartialRendering 属性确定某个页是否参与部分页更新。默认情况下,EnablePartialRendering 属性为 true。因此,默认情况下,当向页添加 ScriptManager 控件时,将启用部分页呈现。
处理部分页呈现错误
在部分页呈现期间,可通过执行以下操作来处理错误:
* 需要设置 AllowCustomErrorsRedirect 属性。当异步回发过程中发生错误时,此属性将决定如何使用 Web.config 文件的自定义错误部分。
* 处理 ScriptManager 控件的 AsyncPostBackError 事件,该事件在异步回发期间出现页错误时引发。
* 设置 AsyncPostBackErrorMessage 属性,该属性是发送到浏览器的错误消息。
使用类型系统扩展
Microsoft AJAX Library 可向 JavaScript 添加类型系统扩展,以提供命名空间、继承、接口、枚举、映射以及字符串和数组的 Helper 函数。这些扩展可以在客户端脚本中提供与 .NET Framework 的功能类似的功能。它们使您能够以结构化方式编写支持 AJAX 的 ASP.NET 应用程序,这将增强可维护性并可以更容易地添加功能和对功能进行分层。向 ASP.NET 网页添加 ScriptManager 控件时会自动包含类型系统扩展,以便您可以在客户端脚本中使用该库。
注册自定义脚本
使用 ScriptManager 控件可管理您为参与部分页更新的控件创建的资源。这些资源包括脚本、样式、隐藏字段和数组。ScriptManager 控件的 Scripts 集合中针对浏览器中可用的每个脚本包含一个 ScriptReference 对象。可以以声明方式或编程方式指定脚本。
ScriptManager 控件还公开一些注册方法,您可使用这些方法以编程方式管理客户端脚本和隐藏字段。当为支持部分页更新的脚本或隐藏字段注册时,必须调用 ScriptManager 控件的注册方法。(若要为部分页更新不需要的脚本注册,请使用 ClientScriptManager 类的方法。)
注册 Web 服务
若要为想要从支持 AJAX 的 ASP.NET 页调用的 Web 服务注册,请通过将 Web 服务添加到 ScriptManager 控件的 Services 集合中来为其注册。ASP.NET AJAX Framework 为 Services 集合中的每个 ServiceReference 对象生成一个客户端代理对象。这些代理类及其强类型成员将简化从客户端脚本使用 Web 服务的过程。
可以以编程方式将 ServiceReference 对象添加到 Services 集合,以便在运行时为 Web 服务注册。
从客户端脚本使用身份验证、配置文件和角色服务
Microsoft AJAX Library 包含用于从 JavaScript 直接调用 ASP.NET 2.0 Forms 身份验证、配置文件和角色应用程序服务的代理类。如果要使用自定义身份验证服务,则可通过使用 ScriptManager 控件来为该服务注册。
ScriptManagerProxy 类
只能向页添加 ScriptManager 控件的一个实例。该页可以直接包含该控件,也可以将其间接包含在嵌套的组件中,如用户控件、母版页的内容页或嵌套的母版页。如果页已包含 ScriptManager 控件,但嵌套的组件或父组件需要 ScriptManager 控件的其他功能,则该组件可以包含 ScriptManagerProxy 控件。例如,ScriptManagerProxy 控件使您能够添加特定于嵌套的组件的脚本和服务。