ASP.NET Ajax组件介绍

  ASP.NET Ajax组件主要有:ScriptManager、ScriptManagerProxy、UpdatePanel、UpdateProgress和Timer,逐一介绍如下:

  ScriptManager

  ScriptManager负责管理页面的所有脚本资源。它必须存在于WebForm中,且存在于其他Ajax控件之前,在ASP.NET Ajax程序中必须包括这个控件的引用。在ScriptManage控件中可以指定需要的脚本库、Web Service、身份验证服务、个性化设置、页面错误处理等。

属性或事件名称

作用和说明

AllowCustomErrorsRedirect

异步回传操作发生错误时,是否显示错误信息

AsyncPostBackErrorMessage

异步回传操作发生时的自定义错误信息

AsyncPostBackTimeout

异步回传时超时限制,默认值为90,单位为秒

AuthenticationService

客户端身份验证服务的相关引用

EnablePageMethods

本页面上的静态页面方法是否可以让客户端脚本直接调用,默认为false

EnablePartialRendering

是否支持页面的局部更新,默认值为True,一般不需要修改

EnableScriptGlobalization

ScriptManager绘制的脚本是否支持不同语种,默认为false

EnableScriptLocalization

ScriptManager绘制的脚本是否需要本地化,默认为false

LoadScriptsBeforeUI

是否需要在加载UI控件前首先加载脚本,默认为false

ProfileService

与之相关的用户个性化信息管理

ScriptMode [1]

指定ScriptManage发送到客户端脚本的模式。包括4种模式:Auto、Inherit、Debug、Release。默认值为Auto

ScriptPath

设置所有的脚本块的根目录,包括自定义的脚本块和引用第三方的脚本块。如果在Scripts中的<asp:ScriptReference/>标签中设置了Path属性,它将覆盖该属性

Scripts

页面所有的脚本集合

Services [2]

页面相关的Web Service

AsyncPostBackError

异步回传发生异常时的服务端处理函数,在这里可以捕获异常信息并作相应的处理

ResolveScriptReference

指定ResolveScriptReference事件的服务器端处理函数,在该函数中可以修改某一条脚本的相关信息,如路径、版本等

对上表的补充说明:

*1、ScriptMode属性

包括4种模式:Auto、Inherit、Debug、Release的具体含义

  如果值为Auto,则根据WebConfig配置中retail配置节的值来决定脚本的模式。如果retail配置节的值为true,则把发布模式的脚本发送到客户端;反之则发送调试脚本。

  如果值为Inherit,同默认值Auto用法。

  如果值为Debug,若retail配置节的值不为true,则发送debug版本的客户端脚本。

  如果值为Release,若retail配置节的值不为false,则发送release版本的客户脚本。

*2、Services属性

  Services用来管理页面对WebServices的调用。通过<asp:ServiceReference>标签可以在Services中注册一个WebService,在运行时,Scriptmanager将为每一个注册的WebService对象生成一个客户端代理,使得可以直接用脚本调用。<asp:ServiceReference>标签的一个重要属性Path,用来指定WebService的路径。

  ScriptManagerProxy

  它是ScriptManager控件在一定情况下的代理。在页面运行时,它和ScriptManager合二为一。在使用母版页的项目中,如果母版页中已经存在了ScriptManager,而内容页又需要使用它,这时候就只能给内容页添加ScriptManagerProxy控件。使用用户控件的情况与此相同。

  UpdatePanel

  UpdatePanel可以大大减少客户端脚本的编写工作量,在程序开发中,该控件和一个ScriptManager控件就可以方便地实现页面的局部刷新。

  UpdatePanel的属性、事件的相关说明

属性或事件名称

作用和解释

ChildrenAsTriggers

当UpdateMode属性为Conditional时,UpdatePanel中的子控件的异步回送是否会引发UpdatePanel的更新

RenderMode

表示UpdatePanel最终呈现的HTML元素。Block(默认)表示<div>,Inline表示<span>

Triggers [1]

用来引起更新的事件

UpdateMode

表示UpdatePanel的更新模式,有两个选项:Always和Conditional。Always是不管有没有Trigger,其他控件都将更新该UpdatePanel,Conditional表示只有当前UpdatePanel的Trigger、ChildrenAsTriggers属性为true时,当前UpdatePanel中控件引发的异步回送或者整页回送,或是服务器端调用Update()方法时间才会引发更新该UpdatePanel

对控件的补充说明:

  *1、Triggers属性

  ASP.NET Ajax中有两种触发器:同步(PostBackTrigger)和异步(AsyncPostBackTrigger),使用同步触发器只需要指定某个服务器控件即可,但此控件会送时采用传统的"postback"机制,即整页会送;使用异步触发器则需要指定某个服务器控件的ID和该控件的某个服务器端事件。

  2、多个UpdatePanel的共存

  由于UpdatePanel的UpdateMode属性默认为always,所以如果页面上有一个局部刷新被触发,则所有的UpdatePanel都将更新。为了避免这种情况,需要将UpdateMode属性设置为Conditional,然后为每个UpdatePanel设置自己的触发器。

  3、多个UpdatePanel的嵌套

  当多个UpdatePanel并列存在时,更新一个UpdatePanel并不连带更新其他的UpdatePanel。但当其嵌套使用时,最外面的被触发更新,它里面的子UpdatePanel也随着更新;但里面的触发更新并不会更新最外层的。

  UpdateProgress

  UpdateProgress负责当页面异步更新数据时,显示给用户友好的提示信息。

  UpdateProgress的属性的相关说明

  

属性或事件名称

作用和解释

AssociatedUpdatePanelID

和该UpdateProgress相关联的UpdatePanel的ID,一般用于有多个UpdatePanel的情况下

DisplayAfter

进度信息被展示后的ms数

DynamicLayout

UpdateProgress控件是否动态绘制,而不占用网页空间

  Timer

  Timer控件负责以固定时间间隔向服务器发送同步或者异步的请求。它经常和UpdatePanel控件结合起来以实现定时异步更新页面一部分的功能。

  Timer的属性、事件

属性或事件名称

作用和解释

Enable

是否启用tick事件

Interval

间隔时间,默认6外μs,即1min

Tick

指定间隔到期后执行