ASP.NET 2.0 Ajax Beta 2 发布说明 (译自文档)
1.发布说明
这篇文档是有关Ajax Beta1和Beta 2版本差别说明
Microsoft ASP.NET Ajax 2.0 Extension 是ASP.NET Ajax技术的新名称。如果您想提供建议,请到Ajax讨论与建议论坛发表您的观点。
这篇发布档主要包括,客户端核心框架,客户端类形系统,通过堆栈调用的HTTP POST和GET网络方法,ScriptManager,UpdatePanel
,UpdateProgress控件也从CTP版添加到了ASP.NET 2.0 Ajax中。
2.安装说明
直接运行ASPAJAXExtSetup.msi文件进行安装,还可以通过命令行进行安装,请输入以下命令进行安装:
siexec /i ASPNETAJAX.msi [/q] [/log <logfilename>] [INSTALLPATH=<installation path>]
- <logfilename>是可选择记录日志的路径名
- <installationpath>是可选择的安装路径
3.两个版本之间的注意事项
前缀从<atlas:>变为<asp:>,之前的前缀名称要进行相应的更改
程序集名称由Microsoft.web.atlas.dll变成Microsoft.web.extensions.dll,新的程序集是强命名的,在安装的过程被加载到GAC高速缓存里,不再需要在工程Bin文件夹里引用原来的程序集
在Visual Studio.net 2005 Team版本中,添加引用对话框项目中,将不会出现Microsoft.web.extensions程序组件。但这种情况不会在VS其它版本中出现。为了解决这个问题,我们可以在Web.config文件里手动添加显示引用:
1.创建一个新注册表项
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\AssemblyFolders\ASP.NET AJAX1.0.61025
2.把键值设置为包含Microsoft.web.extensions.dll程序集的物理路径,而不是环境变量,如:%Programfiles%。如果是默认安装在C盘,那么路径将是:c:\Program Files\Microsoft ASP.NET\ASP.NET 2.0
在Beta 2中,在近服器端的ExtenderControl和IScriptControl的PreRender方法不再起作用,所以客户实例脚本会产生这样一个错误:引用一
个不存在的DOM对象
4.两个版间的不同之处
修复了多个bug,并新引进了新的功能。这些改变可能影响你之前的代码。
4.1:巨大的变化
新加了ScriptResource Handler,但是必需要在Web.config中加入下列项:
<add verb="GET"
path="ScriptResource.axd"
type="Microsoft.Web.Handlers.ScriptResourceHandler"
validate="false"/>
如果Web.config文件中没有,则会引发下列错误:
‘sys’没有定义
ExtenderControl,IExtenderControl和IScriptControl类必须在它们PreRender事件中用ScriptManager注册
在Sys.UI.Key枚举中重命名了与JS冲突的关键字。用del代替delete,用enter代替return
所有Array.ProtoType属性被移到Array类的静态API中,是为了避免和其它客户框架潜在冲突。如:a.add(‘added’)变成了Array.Add(a,’added’)
下面的属性将从虚拟变成非虚拟的:
ProfileServiceManager.Path
AuthenticationServiceManager.Path
UpdatePanelControlTrigger.ControlID
4.2 PartialRendering:UpdatePanel,ScriptManager
在ScriptManager中新增了SupportsPartialRendering属性,该属性默认时会根据浏览器的HttpBrowserCapabilities值来判断是否支持局部刷新,如果返回false,那么不管客户端怎样设置该值,所有局部刷新中的回传调用都会按正常的方式回传页面
ScriptManager.SetFocus 可以方便地在UpdatePanel中设置聚焦
新增了ScriptManager.RegisterDispose,它可以让UpdatePanel控件来保持客户端对像,以备在局部页面刷新过程中需要释放,而不会产生需要DOM对象的异常。
4.3 客户端框架
关于核心框架的更多信息,请查看4.1节
不用创建代理就可以在一个操作里添加DOM的多事件句柄,利用$addHandlers,或者用Sys.UI.DomEvent.addHandler. 通过调用$clearHandlers(或Sys.UI.DomEvent.clearHandlers),可以把通过DomEvent API添加的事件句柄移除,简化了操作逻辑性
Enum.parse 增加一个可选参数:是否区分大小写,Sys.UI.key.parse(“
全局化方面的改变:
在ScriptManager中新增加了EnableClientScriptGlobalization属性。默认值是false。对即将到来的请求,ScriptManager会产生一个内置的Sys.CultureInfo.CurrentCulture类型。这将依据即将到来的请求和页面开发者的重写
在Sys.CultureInfo.CurrentCulture下添加了String.localeFormat, Date.localeFormat, Number.localeFormat方法
在Sys.CultureInfo.InvariantCulture中新加了String.format, Date.format, Number.format方法
本地化方面的改变
原来通过内置Web Resource来获取的动态脚本引用,现在由基于服务器端的ScriptResource 句柄来提供。取代了调用ASP.NET 2.0 WebResource 句柄
ScriptResource 句柄要求在Web.config中有显示申明(请参见4.1)
在ScriptManager中新增了EnableScriptLocalization属性。默认值是false.
当设置为true的时候,ScriptManager会为每个脚本引用包含本地化操作
ScriptResource句柄负责为类库提供脚本引用和追加本地化JS资源类型
静态,基本文本的脚本库将被支持用来本地化操作。页面开发者可以通过ScriptReference.ResourceUICultures属性来检测可用UI的本地化值
有关Debug.trace和debug.dump的改变
开发者可以把堆栈信息输出到叫做TraceConsole的文本框里,脚本调试器中,或FireBug控制台中
开发者可以充分利用debug.dump
脚本加载的提高
客户端框架利用队列模型,来按顺序加载脚本或引用脚本。脚本不再需要用内置<script src=””>标签来定义了
组件和页面开发者在创建通过ScriptManager控件来注册实现的脚本类库时,应当在类库中包括一小段代码片用来指示这个类库是否已经被客户端加载。
尽管不是所有的浏览器都需要这样做,但是对于Safari来说,要求这样以便让它能够动态加载脚本
在ScriptManager中新增了ScriptLoadTimeOut属性,来表示引用的脚本被加载到本地客户端所需要的时间
Sys.Application 会促发一系列新的事件,如加载超时,加载失败
Sys.ApplicationLoadEventArgs设置了一个get_isPartialLoad属性用于检测当前客户端是不是局部刷新模式
4.4网络和程序服务
当Sys.Services.AuthenticationService.logout成功完成的时候,始终会执行重新导向操作,原来只有要指定URL的时候才会执行重新导向(如果没有URL,那么将导向本页面)
Sys.Services.AuthenticationService.login和logout都会调用指定的完成回传事件,甚至当页面重新导向发生的时候,它也会执行。之前的话,回传事件将会被跳过
在Web.config <profileService>配置项中,<configuration><microsoft.web><scripting>
<webServices>下面:
- getProperties属性会调用readAccessProperties方法
- setProperties 属性会调用writeAccessProperties方法
4.5 其它改变
设计类被移到Microsoft.Web.Extensions.Design.dll中
说明:译自Ajax Extension Beta 2 Release Note,原文内容请参见Release Notes for ASP.NET 2.0 AJAX Extensions Beta 2,鉴于水平原因,译文中可能出现错误或不确切的地方,还请批评指教!