本文是对AJAX设计模式 之 怎样构建一个可刷新的无刷新应用一文中讨论的“可刷新Ajax设计模式”的实践,包含了一个对以上设计模式的实现范例,以及全新支持“可刷新Ajax设计模式”的AjaxHelper v0.7最新版本的介绍。
范例
大家可以先下载范例程序亲自体验!
在线演示
下载:RefreshableAjaxSample.zip
这是一个Asp.Net v1.1下的Web Application,点击范例网页中的任意链接,并尝试点击浏览器的刷新按钮,或者按F5刷新页面,可以看到,虽然网页功能是基于Ajax来实现的,但是,刷新网页时是不会丢失当前显示内容的。
原理
“可刷新Ajax设计模式”的实现原理之前的文章中已有概述,这里就不多说了,大家可以参见范例代码!
框架
以上范例基于新版的AjaxHelper DotNet Version 0.7构建,在新版本的AjaxHelper中,为实现“可刷新Ajax设计模式”提供了非常大的便利,具体的改进有:
1、新版本同时提供了AjaxHelper DotNet Version 和支持其它语言环境,如ASP, PHP, Perl等的AjaxHelper Flat Version(Flat版不包含对JSRS-JavaScript Remote Scripting的支持);
2、将之前版本的AjaxHelper中的Updater, Appender等函数封装到AjaxHelper命名空间,即新版本的函数必须以AjaxHelper.Updater...这样的方式调用;
3、新增支持“可刷新Ajax设计模式”的函数有:AjaxHelper.Params, AjaxHelper.Updater2, AjaxHelper.OnPageLoad。
其中,AjaxHelper.Params是一个HashTable,可以以AjaxHelper.Params['paramKey']这样的方式获得网页链接中"#"之后的参数;AjaxHelper.Updater2地使用方法和AjaxHelper.Updater完全一致,只是提供了新的对“可刷新Ajax设计模式”的隐含支持,调用方法可参见帮助文件或者参见我的Blog中之前的关于AjaxHelper的文章;AjaxHelper.OnPageLoad()需要被放置在网页的body元素的onload事件中,以实现网页刷新时的状态维持,可参见以上范例中具体的使用方法。
另外注意,在Flat版本中的所有ajaxTemplate参数必须是完整的网页路径,包括扩展名,而DotNet版中,ajaxTemplate必须是指向UserControl的路径,可以包含.ascx扩展名,也可以不包含,建议不包含。
使用中如有任何问题或建议,欢迎给我留言!
下载
AjaxHelper_DotNet_v0.7.zip
AjaxHelper_Flat_v0.7.zip