文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院网络编程Ajax.Net组件开发介绍 开发ajax控件
精品推荐
特别推荐
·Ajax的一些有用的小技巧
·ajax的server部分(php版)
·AJAX应用篇:必须用到和不必使用的地方
·AJAX使用技巧:如何处理书签和翻页按扭
·在Web2.0下的十大AJAX安全漏洞以及成因
·实例:AJAX编写用户注册实例及技术小结
·警告!Ajax技术的安全问题不容忽视
·AJAX如何与后台交互
·Ajax优于JSF的原因
·Ajax标签导航效果
热点TOP10
·Ajax+GridView+Xml的简易留言薄
·jQuery语法总结和注意事项
·Ajax的一些有用的小技巧
·在Struts 2中使用JSon ajax支持
·AJAX应用篇:必须用到和不必使用的地方
·AJAX使用技巧:如何处理书签和翻页按扭
·在Web2.0下的十大AJAX安全漏洞以及成因
·实例:AJAX编写用户注册实例及技术小结
·用AJAX+J2EE实现一个网上会议室系统
·用AJAX技术来实现天气预报功能

.Net组件开发介绍 开发ajax控件

日期:2007年10月17日 作者: 查看:[大字体 中字体 小字体]


  在如今的web开发中,ajax以一个旧瓶新装的技术,以xml,javascript,XmlHttp为基础变新而来的。正如如今的太极拳,用得相当的广。太极拳是中国武苑中的奇葩异卉,是中华之瑰宝,经历数百年沧桑源远流长,逐渐演变成陈、杨、武、吴、孙、和等诸多流派。太极拳集技击、强体、医身、益智和修性为一体,蕴藏着东方哲学之神韵,正在为越来越多的所认识,而ajax也如太极一样,越来越多的开发人员去追逐。

  我们都知道在.net 2.0中新增了ajax控件,但我们也想开发自已的ajax控件,我们先先看看编写ajax控件的知识吧。

  开发ajax 控件不得不了解

  A. ICallbackEventHandler 接口

  该接口用于指示控件可以作为服务器的回调事件的目标。ICallbackEventHandler 接口的控件为目标时,将把事件变量作为参数传递来调用 RaiseCallbackEvent 方法以处理该事件,并且 GetCallbackResult 方法返回回调的结果。继承这个接口需要实现两个方法: RaiseCallbackEvent,GetCallbackResult.

  >> RaiseCallbackEvent

  用于处理客户端提交的请求。它接收一个string类型的参数,

  格式:

  protected void RaiseCallbackEvent(string eventArgument)
  {
  //do something
  }  

  >>GetCallbackResult负责把服务器的处理结果返回到客户端

  格式

  protected void GetCallbackResult()
  {
   return ### //返回服务端数据
  }

  B.GetCallbackEventReference方法

  用天向服务器端发送回调节器请求的函数。语法:

public string GetCallbackEventReference(
  Control control,
  string argument
  string clientCallback
  string context
  string clientErrorCallback
  bool useAsync
  )

  参数

  control

  处理客户端回调的服务器 Control。该控件必须实现 ICallbackEventHandler 接口并提供 RaiseCallbackEvent 方法。

  argument

   从客户端脚本传递给服务器端的一个参数

  clientCallback

  一个客户端事件处理程序的名称,该处理程序接收成功的服务器端事件的结果

  context

  启动回调之前在客户端计算的客户端脚本。脚本的结果传回客户端事件处理程序

  clientErrorCallback

  客户端事件处理程序的名称,该处理程序在服务器端事件处理程序出现错误时接收结果

  useAsync

  true 表示同步执行回调 false 表示异步执行回调

  返回值

  调用客户端回调的客户端函数的名称。

  介绍完基础知识后。

  开发一个ajax的Text控件,检查用户名是否可用 的控件。

  B。正题:

  我来开发一个ajax控件.命名为(AjaxText)

  先看效果,再分析控件如何工作,再分段解析代码,再贴出完整代码,最后贴出示例代码

  1。先看效果:

.Net组件开发介绍 开发ajax控件

  这个红框就是我们自定义的ajaxText控件.

  请注意下列图红色箭头,就是当我们用户名这个文本框失去焦点时,

  就异步去检查用户名是否存在。

  我们来先看看用户名存在的情况:

.Net组件开发介绍 开发ajax控件

  点注册

.Net组件开发介绍 开发ajax控件

  我们来先看看用户名不存在的情况:可以注册

.Net组件开发介绍 开发ajax控件

  点注册。

.Net组件开发介绍 开发ajax控件

  我们做成 这样一个控件后,我们就不必去写xmlhttp了,

  只要一拖这个控件,写上少量代码(说白了就是传参了)

  2。该控件工作原理.

  该控件从webcontrol继承,并实现了INameContainer,还实现了ICallbackEventHandler接口以便获得回调支持。

  大家可以注意到,我们并没有去实现数据回发事件接口(IPostBackDataHandler),我们这里用到的是异步回调,可以不去实现此接口,

  关于此接口在后述文章中会谈到。

  按从客户端到服务端来解析工作原理

  从注册到页面上的脚本讲起:

  当然需要在客户端本中发出一个调用.

  下面的控件代码中:

string callbackScript = Page.ClientScript.GetCallbackEventReference(this, "this.value", ClientCallBackScript, null);

  前面的这条"Page.ClientScript.GetCallbackEventReference(this, "this.value", ClientCallBackScript, null);在运行时会被解析成什么样子呢?我们只要在页面运行时察看页面源码就可以看到,实际上服务器帮我们生成了下面这段 script代码:

   WebForm_DoCallback('__Page',arg,ReceiveServerData,context,null,false);

  这段代码是什么意思呢?很显然的他调用了一个系统与定义的script函数:WebForm_DoCallback。我们要把这个函数找出来看看它具体 为我们干了什么。在运行时的页面源码中,我们很容易可以找到这段脚本的出处。我们注意到有一个

<script src="/ajaxTextDemo1/WebResource.axd?d=9QMEhP1JOTWr2B3RVTrtnA2&amp;t=633255343980000000" type="text/javascript"></script>

  就是调用下图的WebForm_DoCallback

.Net组件开发介绍 开发ajax控件

  好的,我们说完了客户端,我就来讲讲服务端给我们做了什么

  实现ICallbackEventHandler,则会在客户端页面发现如下一代码

<script src="/ajaxTextDemo1/WebResource.axd?d=9QMEhP1JOTWr2B3RVTrtnA2&amp;t=633255343980000000" type="text/javascript"></script>

  这个代码,眼熟吧,我们开发ajax时,将ScriptManage拖到页面后,在浏览器源代码中发现也有这个脚本吧。

  如果有兴趣的,可以去研究研究它。

  从前面的基础知识是我们知道了它有GetCallbackResult()和void RaiseCallbackEvent(eventArgument)这两个方法。

  根据MSDN的文档,我们知道,在一个callback被post到服务端时, Page将会首先将post回来的form data绑定到当前页面的服务端web控件,接着判断本次post是callback还是postback,如果是postpost,那么自然是原来的那 个机制;

  如果是callback,则将回调用触发本次callback的控件的RaiseCallbackEvent (eventArgument),当然,eventArgument也将会正确的传过来,

  在这个函数的实现代码里我们可以对这个参数进行解析处理,并在某 个地方,存储我们准备返回的数据,或者待处理的已经被解析出来的参数。

  接着,系统将调用string GetCallbackResult(),在这个函数的实现代码中,我们可以直接返回我们在RaiseCallback函数中存储的准备返回的数据,或者 根据待处理的已经被解析出来的参数处理这些参数,并返回结果。这个返回的字符串,自然将以脚本的形式被render回客户端。

  3。分析示例代码:

  3.1我们先申明一个包含事件处理的派生类,因为我们要把AjaxText控件的Text属性写入其中,为什么要这样呢。其实,我们用的是异步回调中的自定义事件,如下下例中的TextChange事件,我想把this.控件ID.Text属性取出来,去对这个text的值去操作,发现text的值取不出来,后面就想到了把text的值写入到事件处理数据类中,也就是 这段代码。

  public class TextChangedEventArgs : EventArgs

[1] [2] [3] 下一页 




上一篇:使用C#来开发.NET CF 蓝牙通信模块

下一篇:.NET Socket开发中的异步Socket

相关文章:
·求职面试自我介绍一分钟
·利用Delphi 5.0开发OLE自动化控制器操纵Excel
·“芯”要让你看见系列之---VIA主板芯片组介绍
·[魔兽世界]任务系统全介绍 - 魔兽世界攻略秘籍 - 魔兽世界
·APE变成高品质MP3音乐 转换工具介绍
·Authorware实战开发专题(4-1)
·QQ会员各种精彩功能及QQ会员特权介绍
·Authorware实战开发专题(4-2)
·职业介绍之网络管理员篇
·Ajax+GridView+Xml的简易留言薄
相关软件:
·中国少年儿童智力开发百科全书(上中下)高清PDF全彩图书
·孙鑫VC++从入门到精通开发详解视频教程FLASH版
·西门子plc软件及教程 文件类型 其它介绍
·中国8大菜系介绍及其他
·PSGRID表格表单组件V2.8
·Windows 程式开发设计指南 中文版
·《苍天》偃月刀操作方法介绍视频
·MAC OSX 10.4.7 iso 其他介绍
·JUJUMAO电脑城装机版4.0 ISO 其他介绍
·Ajax 基础教程 pdf 亚马逊计算机榜首图书

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.viphot.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.viphot.com All Rights Reserved. 鄂ICP备05000083号Powered by:viphot