浅谈ScriptManager与ClientScriptManager的区别

ScriptManager:简单的说就是用于ajax控件中时执行JS脚本
MSDN解释如下: ScriptManager 控件是 ASP.NET 中 AJAX 功能的中心。该控件可管理一个页面上的所有 ASP.NET AJAX 资源。其中包括将 Microsoft AJAX Library 脚本下载到浏览器和协调通过使用 UpdatePanel 控件启用的部分页面更新。此外,通过 ScriptManager 控件,您还能执行以下操作:
  • 注册与部分页面更新兼容的脚本。为了管理您的脚本与核心库之间的依赖项,将在加载 Microsoft AJAX Library 脚本之后加载您注册的所有脚本。
  • 指定是发布还是调试发送到浏览器的脚本。
  • 通过向  ScriptManager 控件注册 Web 服务,提供从脚本访问 Web 服务方法的权限。
  • 通过向  ScriptManager 控件注册 ASP.NET 身份验证、角色和配置文件应用程序服务,提供从客户端脚本访问这些服务的权限。
  • 在浏览器中以区域性特定的形式显示 ECMAScript (JavaScript) 的  Date、 Number 和  String 函数。
  • 使用  ScriptReference 控件的  ResourceUICultures 属性来访问嵌入式脚本文件或独立脚本文件的本地化资源。
  • 向  ScriptManager 控件注册可实现  IExtenderControl 或  IScriptControl 接口的服务器控件,以便呈现客户端组件和行为所需的脚本。

部分页面呈现

ASP.NET 页面支持部分页面呈现的能力受到以下因素的控制:
  • ScriptManager 控件的  EnablePartialRendering 属性必须为  true(默认值)。
  • 页面上必须至少有一个  UpdatePanel 控件。
  • SupportsPartialRendering 属性必须是  true(默认值)。如果没有显式设置  SupportsPartialRendering 属性,则其值依浏览器功能而定。
可以在发生页面的  Init 事件期间或之前,在运行时重写  EnablePartialRendering 属性的值。如果试图在发生页面的  Init 事件后更改此属性,则会引发 InvalidOperationException 异常。
当部分页面呈现受支持时, ScriptManager 控件会呈现脚本以启用异步回发和部分页面更新。可使用  UpdatePanel 控件来指定要更新的页面区域。 ScriptManager 控件会处理异步回发,并且只刷新必须要更新的页面区域。有关部分页面呈现的更多信息,请参见 部分页呈现概述。有关导致更新的情形的更多信息,请参见  UpdatePanel 控件概述

将 ScriptManager 控件与母版页、用户控件及其他子组件一起使用

一个页面在其层次结构中只能包含一个  ScriptManager 控件。若要在父页面已具有  ScriptManager 控件时为嵌套页面、用户控件或组件注册服务和脚本,请使用 ScriptManagerProxy 控件。有关更多信息,请参见 将 ASP.NET UpdatePanel 控件用于母版页

脚本管理和注册概述

通过  ScriptManager 控件可注册随后将作为页面一部分呈现的脚本。 ScriptManager 控件注册方法可以细分为以下三种类别:
  • 保证维护 Microsoft AJAX Library 上脚本依赖项的注册方法。
  • 不依赖 Microsoft AJAX Library 但与  UpdatePanel 控件兼容的注册方法。
  • 支持与  UpdatePanel 控件协作的注册方法。
有关如何在 ASP.NET 中创建和使用 AJAX 脚本的更多信息,请参见 使用 Microsoft AJAX Library 创建自定义客户端脚本

注册依赖 Microsoft AJAX 库的脚本

可以使用下列方法,以保证维护 Microsoft AJAX Library 上所有依赖项的方式注册脚本文件。 
方法
定义
RegisterScriptControl<TScriptControl>
注册可实现用来定义  Sys.Component 客户端对象的  IScriptControl 接口的服务器控件。 ScriptManager 控件呈现支持该客户端对象的脚本。
RegisterExtenderControl<TExtenderControl>
注册可实现用来定义  Sys.UI.Behavior 客户端对象的  IExtenderControl 接口的服务器控件。 ScriptManager 控件呈现支持该客户端对象的脚本。

注册部分页面更新兼容脚本

可以使用下列方法注册不依赖 Microsoft AJAX Library 但与  UpdatePanel 控件兼容的脚本文件。这些方法与  ClientScriptManager 控件的类似方法相对应。如果为便于在  UpdatePanel 控件中使用而呈现脚本,则应确保调用  ScriptManager 控件的方法。
方法
定义
RegisterArrayDeclaration
在 JavaScript 数组中添加值。如果该数组不存在,则创建它。
RegisterClientScriptBlock
在页面的  <form> 开始标记之后呈现一个  script 元素。该脚本被指定为字符串参数。
RegisterClientScriptInclude
在页面的  <form> 开始标记之后呈现一个  script 元素。通过将  src 属性设置为指向脚本文件的 URL 来指定脚本内容。
RegisterClientScriptResource
在页面的  <form> 开始标记之后呈现一个  script 元素。脚本内容是使用程序集中的资源名称指定的。通过调用从程序集中检索命名脚本的 HTTP 处理程序,来使用 URL 自动填充  src 属性。
RegisterExpandoAttribute
在标记中为指定控件呈现一个自定义名称/值属性对(一个 expando)。
RegisterHiddenField
呈现隐藏字段。
RegisterOnSubmitStatement
注册为响应  form 元素的  submit 事件而执行的脚本。 onSubmit 属性引用指定脚本。
RegisterStartupScript
在页面的  </form> 结束标记之前呈现启动脚本块。要呈现的脚本被指定为字符串参数。
在注册方法时,可为该脚本指定类型/键对。如果已注册了一个包含相同类型/键对的脚本,则不会注册新的脚本。同样,如果所注册脚本的类型/资源名称对已存在,则不会再添加引用该资源的  script 元素。如果注册一个以前注册的属性的 expando 属性,则会引发异常。允许重复注册数组值。
在调用  RegisterClientScriptInclude 或  RegisterClientScriptResource 方法时,应避免注册执行内联函数的脚本。相反,应注册包含函数定义(如事件处理程序)或应用程序的自定义类定义的脚本。

UpdatePanel 控件的注册方法

在使用  UpdatePanel 控件时,可使用以下方法来自定义部分页面更新。
方法
定义
RegisterAsyncPostBackControl
将控件注册为异步回发的触发器。
RegisterDataItem
在部分页面呈现期间将自定义数据发送到控件。
RegisterDispose
为  UpdatePanel 控件内的某个控件注册一个 dispose 脚本。在更新或删除  UpdatePanel 控件时会执行该脚本。该释放方法用于作为 Microsoft AJAX Library 的一部分且必须在不再使用组件时释放资源的客户端组件。
RegisterPostBackControl
将控件注册为完全回发的触发器。该方法用于  UpdatePanel 控件内以其他方式执行异步回发的控件。

Web 服务引用

通过创建一个  ServiceReference 对象,然后将其添加到  ScriptManager 控件的  Services 集合中,可以注册一个要从客户端脚本调用的 Web 服务。ASP.NET 可为 Services 集合中的每个  ServiceReference 对象生成一个客户端代理对象。可通过编程方式将  ServiceReference 对象添加到  Services 集合中,以便在运行时注册 Web 服务。
有关如何通过脚本访问 Web 服务的更多信息,请参见 向客户端脚本公开 Web 服务从客户端脚本调用 Web 服务

本地化

ScriptManager 控件可在呈现页面中生成指向适当的本地化脚本文件(嵌入程序集中的脚本文件或独立脚本文件)的引用。
在将  EnableScriptLocalization 属性设置为  true 时, ScriptManager 控件会检索当前区域中诸如本地化字符串这样的本地化资源(如果存在)。 ScriptManager 控件可为使用本地化资源提供下列功能:
  • 嵌入到程序集中的脚本文件ScriptManager 控件可确定将哪个区域性特定的或回退区域性脚本文件发送到浏览器。为此,它会使用区域性特定的 NeutralResourcesLanguageAttribute 程序集属性、打包在程序集中的资源以及浏览器的 UI 区域性(如果有)。
  • 独立脚本文件ScriptManager 控件可使用  ScriptReference 对象的  ResourceUICultures 属性来定义受支持的 UI 区域性的列表。
  • 在调试模式中ScriptManager 控件试图呈现包含调试信息的区域性特定的脚本文件。例如,如果页面处于调试模式且当前区域性设置为 en-MX,则该控件会呈现一个其名称如  scriptname.en-MX.debug.js 这样的脚本文件(如果该文件存在)。如果该文件不存在,则呈现适当回退区域性的调试文件。
有关如何本地化资源的更多信息,请参见 组件库资源本地化概述

错误处理

如果在异步回发期间出现页面错误,则会引发  AsyncPostBackError 事件。以何种方式将服务器上的错误发送到客户端取决于  AllowCustomErrorsRedirect 属性、 AsyncPostBackErrorMessage 属性以及 Web.config 文件的自定义错误部分。有关更多信息,请参见  自定义 ASP.NET UpdatePanel 控件的错误处理
ClientScriptManager: 简单的说就是用于非ajax 控件中时执行JS脚本
MSDN解释如下: ClientScriptManager 类用于管理客户端脚本并将它们添加到 Web 应用程序中。可以从 Page 对象的 ClientScript 属性获取对 ClientScriptManager 类的引用。
通过在网页的 HTML 标记中包含脚本,可以声明方式向网页添加客户端脚本。然而,有些情况下需要动态添加客户端脚本。若要动态添加脚本,根据您想添加脚本的时间及方式,使用  RegisterClientScriptBlock 方法、 RegisterClientScriptInclude 方法、 RegisterStartupScript 方法或  RegisterOnSubmitStatement 方法。有关更多信息,请参见  如何:向 ASP.NET 网页动态添加客户端脚本。
ClientScriptManager 类通过键  String 和  Type 唯一地标识脚本。具有相同的键和类型的脚本被视为重复脚本。使用脚本类型有助于避免混淆可能用在页中的来自不同用户控件的相似脚本。
在期望不执行回发而从客户端运行服务器代码的情况下,可以使用  ClientScriptManager 类来调用客户端回调。这称为对服务器执行带外回调。在客户端回调中,客户端脚本函数向 ASP.NET 网页发送异步请求。网页修改其正常生命周期来处理回调。使用  GetCallbackEventReference 方法获取一个对客户端函数的引用,当调用该函数时,它将启动一个对服务器端事件的客户端回调。有关更多信息,请参见  在 ASP.NET 网页中不经过回发而实现客户端回调。
Note注意
脚本回调不能在不支持文档对象模型 (DOM) 的较早浏览器中使用,并要求客户端启用 ECMAScript。若要检查客户端的浏览器是否支持回调,请使用 SupportsCallback 属性,该属性可以通过 ASP.NET  Request 内部对象的  Browser 属性访问。
使用  GetPostBackEventReference 方法和  GetPostBackClientHyperlink 方法定义客户端回发事件。这些方法启用客户端脚本函数,在调用这些函数时,它们将促使服务器向该页回发。客户端回发与客户端回调的区别在于网页处理客户端回发事件要用完一个正常的生命周期。
Note注意
如果您在使用  Button 控件且  UseSubmitBehavior 属性设置为  false,则可以使用  GetPostBackEventReference 方法返回  Button 控件的客户端回发事件。
可以使用  Button 控件、 ImageButton 控件和  LinkButton 控件的  OnClientClick 属性来运行客户端脚本。

你可能感兴趣的:(职场,休闲,ScriptManager)