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 |
指定间隔到期后执行 |