摘要:ScriptManager是Atlas一个重要的控件,它用来处理页面上的所有Atlas组件以及局部页面的更新,生成相关的客户端脚本,所有需要支持Atlas的ASP.NET页面上有且只能有一个ScriptManager控件。在ScriptManager控件中我们可以指定需要的脚本库,或者指定通过JS来调用的Web Service,还可以指定页面错误处理等。
主要内容
1
.概述
2
.Script Management
3
.Web Service References
4
.Error Handling
5
.ScriptManagerProxy
一.概述
ScriptManager
是Atlas一个重要的控件,它用来处理页面上的所有Atlas组件以及局部页面的更新,生成相关的客户端脚本,所有需要支持Atlas的ASP.NET页面上有且只能有一个ScriptManager控件。在ScriptManager控件中我们可以指定需要的脚本库,或者指定通过JS来调用的Web Service,还可以指定页面错误处理。一个完整的ScriptManager形式如下:
的属性解释如下:























































ScriptManager
属性名
|
说明
|
EnablePartialRendering
|
是否开启页面局部更新功能,默认值为false
EnablePartialRendering
="true|false"
|
EnableScriptComponents
|
是否启用XML脚本模式,默认值为true
EnableScriptComponents
="true|false"
|
ID
|
控件ID
ID
="ScriptManager1"
|
OnPageError
|
页面错误处理,后面会详细讲到
OnPageError
="PageError Event Handler"
|
runat
|
总是runat="server"
|
关于EnablePartialRendering和EnableScriptComponents,我觉得Flier Lu解释的比较透彻:
1
.EnablePartialRendering
传统的 Post Back 模式页面,在用户 submit 时会重绘整个页面,并导致浏览器显式的闪烁。而在基于 AJAX 技术的 Altas 框架中,可以通过 UpdatePanel 标签指定需要重绘的局部。这样一来页面在处理请求时,会首先根据 ScriptManager.IsInPartialRenderingMode 属性判断是否在重绘模式中。如果在重绘模式,则仅仅将需要重绘的 UpdatePanel 内容,返回给客户端浏览器,并由 Altas 自动进行内容的更新。通过这种模式,使用者可以在对代码几乎无需修改的情况下,直接享受到 AJAX 带来的客户端用户体验的提升。
我们也可以通过IsInPartialRenderingMode属性来判断当前页面是否开启了局部更新功能。
2
.EnableScriptComponents
XML
脚本模式是 Altas 引入的基于 XML 的描述性组件定义模型,可以通过一组 XML 标签,定义页面中已有 Web 组件的 AJAX 行为,而无需对现有组件进行修改和调整。而且因为所有的行为都是由 Altas 引擎在客户端动态绑定,所以组件的目标也可不仅仅限于现有的 Web 组件。具体的介绍可以参考 Atlas XML Script。而对于某些特殊情况,例如 ASP.NET 2.0 中的 master 页面,可以通过此属性关闭 XML 脚本支持,以大幅度简化页面的功能,此时 Altas 会自动使用 AtlasRuntime.js替换完整的 Atlas.js 脚本
。
二.Script Management
Script
属性用来包含那些ASP.NET Atlas自带的标准JS库或者是自定义的JS脚本。我们可以使用Path属性来指定一个JS的路径或者使用ScriptName来指定脚本名。ScriptReference示例如下:
的属性如下:















ScriptReference
属性
|
描述
|
Path
|
自定义JS脚本的路径
Path
="MyCustom.js"
|
ScriptName
|
指定标准库中的JS脚本名,其中可以指定的有:AtlasUIDragDrop、AtlasUIGlitz、AtlasUIMap、AtlasWebParts
ScriptName
="AtlasUIDragDrop"
|
Browser
|
指定脚本适用的浏览器
|
ScriptManager
确保每一个脚本只包括一次,试图添加多次将会被忽略。我们也可以使用RegisterScriptReference()方法来添加JS脚本,在使用时要注意添加的JS脚本是否已经存在了。
三. Web Service References
ServiceReferences
指定将通过JS来调用的Web Service,同样它也支持通过Path指定Web Service的路径或者通过Type来指定类型。ServiceReferences示例如下:











ServiceReferences
的属性如下:
属性
|
描述
|
Path
|
指定.asmx的路径
<
atlas
:
ServiceReference
Path="MyWebService.asmx"/>
|
Type
|
指定Web Service的类型
<
atlas
:
ServiceReference
Type="MyWebService"/>
|
GenerateProxy
|
是否生成客户端脚本的代理
GenerateProxy
="true"
|
四.Error Handling
默认的出错信息应该是Exception.Message,ScriptManager允许通过访问PageErrorEventArgs参数重新在OnPageError中自定义我们的错误信息。我们也可以使用ErrorTemplate来自定义错误信息的显示样式, ErrorTemplate中必须包含如下元素:
控件/元素
|
属性
|
说明
|
Button
|
id
="okButton"
runat
="server"
|
用来关闭错误信息
|
<span>
或者<div>
|
id
="errorMessageLabel"
runat
="server"
|
显示错误信息
|
注意以上元素的属性不能更改,包括控件的id,完整的ErrorTemplate代码:











































































































































运行后单击Error按钮,会出现如下界面:

五.ScriptManagerProxy
在本文开始的时候说到了对于需要支持Atlas的ASP.NET页面上有且只能有一个ScriptManager控件,如果遇到有master-page的情况,在master-page和content-page中需要引入不同的脚本,这时候需要在content-page中使用ScriptManagerProxy而不是ScriptManager,ScriptManagerProxy是一个和ScriptManager非常的类似的控件。示例:
Master-page
:
Content-page
:












完整的示例可以参见
Atlas网站。
关于Atlas的ScriptManager介绍就到这里了,本人也是刚开始接触Atlas,希望能跟大家共同交流,这样我的Atlas学习之旅也许会轻松一些。
posted on 2006-07-26 13:04
TerryLee 阅读(2002)
评论(14)
编辑
收藏
引用
收藏至365Key 所属分类:
D Ajax & Atlas 、
B .NET2.0技术

评论
不错,支持一下!
回复
TerryLee是一个非常非常爱学习的人!!!绝对支持!
回复
Altas以后可能就是.Net Framwork的一部分。
并且可能年底会出最终的版本。
我是从 http://blogs.msdn.com/alainler/archive/2006/07/26/678730.aspx看到的。
是值得学习的好东西。 回复
并且可能年底会出最终的版本。
我是从 http://blogs.msdn.com/alainler/archive/2006/07/26/678730.aspx看到的。
是值得学习的好东西。 回复
Hao~````喜欢你哦
回复
@我不是一只鹿
:-) 回复
:-) 回复
ScriptManagerProxy 你用过吗?我一直没找到它的demo
我在content中放proxy,还是会报没有manager的错误。
我将manager放在了master上。
你是怎么用的?
回复
我在content中放proxy,还是会报没有manager的错误。
我将manager放在了master上。
你是怎么用的?
回复
@
liuyuer
参考:
Master:


























Content:














能不能给个可以run起来的DEMO下载?
为啥我的content中的updatepanel总是说找不到manager 回复
为啥我的content中的updatepanel总是说找不到manager 回复
哦,我在官方网站找到了这个例子,多谢
回复
摘要:在页面上执行较长时间的操作时,如果能够给用户提供一个类似于浏览器状态栏那样的进度条,将会使界面用户界面更加友好。在Atlas中,为我们提供的UpdateProgress控件可以轻松的实现这些。
查看原文
回复
DragOverlayExtender允许我们对任何控件添加类似于Drag-and-Drop Behaviors那样的拖放(Drag-and-Drop)功能,更重要的是如果要对已经存在的控件添加,我们不需要对原有控件做任何的改动,只需添加一个DragOverlayExtender就可以轻松实现。
查看原文
回复
# re: Atlas学习手记(2):全面了解ScriptManager 2006-07-26 14:33
sjkehh