请大家说说.net 里的callback机制

浮生若梦丶 2008-12-15 10:23:28

1.1 ASP.NET1.1中的Postback机制

在asp.net1.1中,我们知道每个服务器控件都有一个AutoPostback属性。它的作用是当用户(客户端)修改该控件的值,即也可以说是当该控件的事件触发的时候,客户端就通过JavaScript:__doPostback(object,EventArgument)来和服务端实现通信。它使得程序员在实现动态的获取服务端数据变得非常方便。例如:有一个查询成绩的页面,由一个DrowDownlist和一个DataGrid来实现。其中DropDownlist从服务绑定所要查看的学期(2003-2004上半学期,2003-2004下半学期等),DataGrid而是用来显示他在改学期所有科目的成绩,和该学科的学分。在ASP.NET1.1中我们最常使用的方法也就是将DrowDownlist的AutoPostback属性设置为True,并把该事件触发服务端后台的某个方法,该方法获取所选择的学期的id号,然后去数据库获得DataTable重新绑定与DataGrid并将它显示出来。在这整个过程中,作为用户肯定是要经历一个刷新页面的过程。如果仅像刚才那个例子所说这个刷新不会很大的影响用户的Experience,不过如果你有一个复杂的填写表单的页面,该页面有大量的Control是相关的,需要更据其它Control的选择情况去动态的绑定数据,那当用户填完这个表单的时候也许眼睛也花了,他也许再也不想经历如此痛苦的折磨了,从Experience方面来讲将是非常差的。在不是从服务端获取大量数据的情况下,我们要如何才能避免这种在用户看似多余的Postback呢?

1.2 ASP.NET2.0中新功能Script Callback介绍

在ASP.NET2.0中,客户端的脚本功能已经被扩展了。并且增加了Script Callbacks(通过脚本建立于后台的链接,后文将其翻译为客户端呼叫)。你可以用程序去控制<head>标签,通过程序控制input焦点,读取或者设置页面的标题,并且可以控制button或其他的控件提交到其他任何页面(in the application)。具体您可以查看Beta 1 说明,里面有例子和参考。
为了使用ASP.NET2.0中的客户端呼叫技术,你需要在页面中定义一个触发元件(不是提交按钮Submit button)并且把它绑定上JavaScript代码。这段代码会重新获得当前页面的input数据并且准备去呼叫系统提供的一个称为WebForm_DoCallback的Script函数(Beta1)。这个函数会建立一个和一个指定的远程ASP.NET页面建立HTTP连接。后台侦听到这个来自客户端的呼叫后呢,对此触发一个方法。服务端通过先前的客户端的函数返回一个值。在客户端,通过一个用户自定义的脚本函数来获得服务端的值并且用DHTML将其呈现在页面上。重要的是,这样做客户端和服务端的通信仍旧在进行,但是页面并没有重新刷新。更重要的是,当客户端在获取数据的时候用户仍旧可以在它原来的页面上操作。
...全文
300 36 打赏 收藏 转发到动态 举报
写回复
用AI写文章
36 条回复
切换为时间正序
请发表友善的回复…
发表回复
dayou123123 2008-12-15
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 fly_to_the_winds 的回复:]
请大家贴个代码讲解下咯,学习嘛
[/Quote]

学习
orain 2008-12-15
  • 打赏
  • 举报
回复
本质上是 XMLHttpRequest,在 Ajax 的概念尚未风行前,这是个不错的主意,但目前来说,我觉得并不太方便,尤其是在一些稍微复杂的应用中。否则微软也不会推出 Ajax.net,但 Ajax.net 仍然算是一个失败的产品,听说微软要抛弃自己的 Ajax.net 了,全面引入 JQuery,呵呵.
jiang_jiajia10 2008-12-15
  • 打赏
  • 举报
回复
http://teddyma.cnblogs.com/archive/2005/11/28/286196.html
会用不会详细说参考这个吧
RHCL 2008-12-15
  • 打赏
  • 举报
回复
mark~
angelzqchen 2008-12-15
  • 打赏
  • 举报
回复
首先,有了XMLHTTP这个东东,大家可以实现界面无刷新的与server通信。
然后有了.net,M$封装了一下,放到.net中,于是有了callback。
最后M$看到所有人都在大谈AJAX,没办法了,别人有咱也得有啊,再把callback封装封装吧,于是有了ajax.net。

个人比较喜欢callback的说……
angelzqchen 2008-12-15
  • 打赏
  • 举报
回复
学习
qwertxp 2008-12-15
  • 打赏
  • 举报
回复
首先,有了XMLHTTP这个东东,大家可以实现界面无刷新的与server通信。
然后有了.net,M$封装了一下,放到.net中,于是有了callback。
最后M$看到所有人都在大谈AJAX,没办法了,别人有咱也得有啊,再把callback封装封装吧,于是有了ajax.net。

个人比较喜欢callback的说……
游北亮 2008-12-15
  • 打赏
  • 举报
回复
参见这个帖子:
http://blog.csdn.net/youbl/archive/2008/08/05/2771211.aspx

[Quote=引用 8 楼 fly_to_the_winds 的回复:]
请大家贴个代码讲解下咯,学习嘛
[/Quote]
net_xiaojian 2008-12-15
  • 打赏
  • 举报
回复
看的眼花
mengxj85 2008-12-15
  • 打赏
  • 举报
回复
学习
cpp2017 2008-12-15
  • 打赏
  • 举报
回复
==,一会给你写个
浮生若梦丶 2008-12-15
  • 打赏
  • 举报
回复
请大家贴个代码讲解下咯,学习嘛
zhnzzy 2008-12-15
  • 打赏
  • 举报
回复
我也说不太清楚,只是会用而已
takeshe 2008-12-15
  • 打赏
  • 举报
回复
觉得挺实用的!
ustbwuyi 2008-12-15
  • 打赏
  • 举报
回复
不过使用起来算是比较方便的,算是个轻量级的Ajax吧,比起那些动辄拖控件引框架来实现的Ajax灵活得多
setsailgo 2008-12-15
  • 打赏
  • 举报
回复
up
ustbwuyi 2008-12-15
  • 打赏
  • 举报
回复
本质上仍然是XmlHttpRequest对象来完成的
cpp2017 2008-12-15
  • 打赏
  • 举报
回复
要怎么说呢?其实就是个ajax.
amanizty 2008-12-15
  • 打赏
  • 举报
回复
up~ 关注
浮生若梦丶 2008-12-15
  • 打赏
  • 举报
回复
好郁闷,结个帖那么复杂!!!
加载更多回复(16)

62,269

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧