• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ASP.NET 2.0 ClientScript Callback

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

当AJAX出名的时候,ASP.NET 2.0已经基本上完成并且离最后发布时间还剩下半年,此时人人都希望MS为ASP.NET 2.0加上AJAX支持但MS说我们没时间加了,AJAX将成为独立的Atlas项目并出现在ASP.NET 3.0中。不过ASP.NET 2.0中有一个非常通用的但只能称为Method而不能称为Framework的AJAX支持,那就是Callback。

Callback的使用非常简单,首先你要有一个实现了ICallbackEventHandler的Control,例如你在你的Page上面实现ICallbackEventHandler,这个接口会要你实现RaiseCallbackEvent()和GetCallbackResult(),讲简单点其实它们就从客户端接受一个String的传入交给你处理,你处理完就传回一个String给客户端,详细的处理由Page的RenderCallback来负责,这个不需要你操心。

如果你用Callback,好处是你不需要管什么WebService之类的东西,你可以把Callback整合到Page里面(如果你一个Page只需要一个Callback)或者你自己封装的某个Control里面(如果这个Control自己使用一个Callback)。可以看到,Callback是希望你把处理封装到Control,例如你自己可以继承Button写一个CallbackButton实现ICallbackEventHandler及其两个函数,然后你把RaiseCallbackEvent()冒泡为CallbackClick()事件。

Callback有一个有趣的地方,就是传入和传出String分在两个函数里面了。看起来,这是很蠢的行为,但实际上它是为了符合ASP.NET对象模型那种事件处理方式,也就是Event与Render的分离。ASP.NET里面,Event和Render不像ASP那样是直接相关的(因为某个按钮点击了,所以输出某个反馈),Event是影响于ASP.NET对象模型,或者直接点说主要就是控件树和HttpContext,然后Render是根据控件树和HttpContext去生成HTML,但任意多个Event对控件树和HttpContext的影响应该是正交设计的。你可以在Callback的时候好象Postback那样把所有数据都发回来然后填充控件树然后Render时就如Postback一样根据整个完整的控件树去输出。

最后,Callback是一个半成品,MSDN中关于Callback的资料也有很多错漏的地方,所以大家自己弄清楚怎么用好用就够了,MS的目标是让Callback和Postback一致从而方便实现AJAX,但暂时还没有实现,还有很多Script代码要自己去写。另外我在看Callback的文章时看到,在System.Web.Util里面有很多很好用的小工具式代码,可以给你带来不少方便的,在你写例如服务器端String转换为脚本端String之类的代码前请记得找找那里有没有写好的,不要为此而浪费自己的时间。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
ASP.NETMVCBootstrap极速开发框架发布时间:2022-07-10
下一篇:
ASP.NET操作EXCEL发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap