网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 大学论文导航 设计下载 最新论文 下载排行 原创论文 论文源代码
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > ASP.net > 正文

ASP.NET 中的自定义脚本回调

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/13

  ASP.NET 客户端回调代表着一种简洁而绝佳的方法,它可以在不发布和刷新当前页的情况下执行服务器端代码。我在 2004 年 8 月和 12 月的 Cutting Edge 专栏中讨论了 ASP.NET 回调,当时是从对服务器进行后台回调、向相关页发送输入数据以及接收响应的呈现页的角度对它们进行了讨论。然后,响应字符串由合适的客户端进行处理,并且通常通过动态 HTML (DHTML) 对象模型和嵌入到页面中的回调 JavaScript 函数来操作呈现的页面内容。
  
  尽管回调的这种用法已经让人非常激动了,但它们还可以执行更多的任务。脚本回调机制也可以为服务器控件添加高级功能。通过实现几个接口,任何自定义控件都会被赋予脚本回调功能,以便使用后台往返来收集服务器数据以及更新用户界面 — 这就是本月我要讲述的主题。
  
  受 GridView 控件的启发
  
  如果您读过我最近写的一篇功能文章 ASP.NET 2.0 GridView,您就会了解 GridView 控件无需刷新整个页面就可以显示新的记录页。实际上,GridView 控件提供了一个基于 ASP.NET 脚本回调进行分页和排序的高级引擎。新页面的数据是在后台下载的,用户看不到。在数据到达客户端之后,这些数据将立即由 JavaScript 函数收集,并用于更新当前视图。
  
  分页和排序回调并不是 100% 的客户端回调解决方案(如果您需要一个纯粹的客户端实现,请参阅 2004 年 2 月 Jeff Prosise 在 Wicked Code 专栏中发表的文章)。GridView 的分页和排序回调是按需工作的,它只下载需要的数据,而不会将整个数据源都下载到客户端上。您仍然要付出一个往返的代价,但是能够保证得到最新的数据,即使这些数据最近已经在服务器上更新过。
  
  自从发现 ASP.NET 控件可以支持脚本回调功能之后,我感到非常兴奋,同时也促使我赶紧找出构建自己的脚本回调的方法。
  
  顺便提一句,GridView 并不是唯一一个支持类似功能的 ASP.NET 2.0 控件。其他视图控件(如 TreeView、DetailsView 和 FormView)也能以其他方式提供相同的功能。作为使用具有回调功能控件的开发人员,您不需要处理服务器端代码,也不用担心编写以及在宿主页中嵌入 JavaScript 代码的问题。该控件可以完成一切操作,它展示了一个直观的编程模型,您可以通过该模型控制脚本回调机制。
  
  控件脚本回调基本知识
  
  ASP.NET 脚本回调机制由两个关键元素组成:响应用户操作的服务器端代码,以及客户端上处理服务器端事件所生成结果的 JavaScript 回调代码。在页面回调自身的情况下,正如我在前面提到的文章中所述的那样,您可以在执行对用户不可见的回发的页面按钮中附加一些 ASP.NET 生成的脚本代码。因为该请求的目标是当前页,所以该页会发布到自身,这与它在一个普通回发事件中的行为方式相似,只是页面的生命周期缩短了。该页必须实现 ICallbackEventHandler 接口,以便可以调用一个具有预定义签名的方法,来为客户端生成结果。
  
  那么,当控件触发带外调用时,该方案又有什么不同呢?在这种情况下,“不可见”回发的目标 URL 是承载该调用方控件的页面的 URL。该控件必须实现 ICallbackEventHandler 才能提供为客户端生成某些结果的方法。同样,该控件负责在承载页中插入处理结果和刷新该页所需的任何 JavaScript 代码。
  
  具有回调功能的控件只是一个实现 ICallbackContainer 和 ICallbackEventHandler 接口的控件,两个接口都各有一个方法。ICallbackContainer 接口具有的方法可以返回触发远程调用的脚本代码;ICallbackEventHandler 接口则提供了在调用期间执行的服务器端代码。ICallbackEventHandler 也是一个具有回调功能的页面必须实现的接口。一个实现回调接口的自定义控件示例的声明如下面的代码所示

网学推荐

免费论文

原创论文

设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号