作为从事B/S系统开发的程序员,特别是前台设计 的,经常会涉及到 页面的布局和用户体验,不停地想怎样把界面设计布局的恰当,怎样使用户有更好的体验。无刷新技术就是为了让用户有更好的体验,现在关于无刷新技术非常多, 大家最熟悉听得最多的就是Ajax,只要一提到Ajax就代表了无刷新或异步更新。现在也出现了很多关于Ajax的框架,总之实现无刷新页面的方法有很 多,可以选择的框架也很多,常用的有jquery、prototypejs,微软也出了自己的Ajax组件,也有人开发出自己的Ajax框架
Ajax并不是什么新技术,现在来说用到的也不多,我觉得尽量少用,除非需要否则不应大量的这种无 刷新效果。就我在开发上经常用到就是asp.net2.0自带的ClientCallback,非常简单实用,我的程序也不需要大量的无刷新,只是某几个 页面需要后台验证和操作少两数据。对于这种情况,我不可能去加个框架和加几个文件进来,之前也用过prototypejs,在一个团队 里开发都有一套严格的规范,在开发时需要加入外部文件都是有严格限制,反正在我们的开发团队是这样。
使用ClientCallBack实现无刷新的步骤:
1.要实现这种效果后台文件aspx.cs的Page类必须继承ICallbackEventHandler接口,如
- public partial class _Default : System.Web.UI.Page, ICallbackEventHandler
2.在前台.aspx文件实现回调脚本。
- function callServer(action)
- { <%=this .ClientScript.GetCallbackEventReference( this , "action" , "responseBack" , "context" , true )%>
- }
//上面的异步调用处理完到执行响应函数ret是返回的参数
- function responseBack(ret)
- {
- switch (ret)
- {
- case 0:dosomething; break ;
- case 1:dosomething; break ;
- }
- }
- function checkInput()
- {
- var action= “add”; //需要传递到后台的参数,需要什么参数就传什么参数,例如可以传少量数据
- callServer(action);//调用回调函数
- }
整个调用入口在checkInput(),在需要的地方调用checkInput函数即可。
3.第三步,刚才说要必须继承ICallbackEventHandler,同时要实现RaiseCallbackEvent和GetCallbackResult这两个方法。
- public void RaiseCallbackEvent( string eventArgument)
- {
- //eventArgument就是上面传过来的参数action
- // 服务器端操作,在这里可以根据action进行有关的操作
- callbackResult = “返回的数据”;
- }
- public string GetCallbackResult()
- {
- return callbackResult;
- }
这样就基本实现了无刷新页面。我们再来简单回顾一下整个过程,首先,后台页面必须继承ICallbackEventHandler接口,并实现实现 RaiseCallbackEvent和GetCallbackResult这两个方法,这两个方法的原型就是上面这样的格式,然后在前台页面写几个相关 的调用 函数,构造好参数,调用callServer(action),这样程序就会自动调用后台的RaiseCallbackEvent方法,然后通过GetCallbackResult返回结果,最后前台脚本responseBack(ret)根据返回的结果进行处理 。
整个调用过程:checkInput()-》callServer(action)-》RaiseCallbackEvent(string eventArgument)-》GetCallbackResult()-》responseBack(ret)