客户端回调本质上就是指通过前端的客户端脚本向服务器端传递相应的数据参数,服务器端再以接受到的参数进行查询和处理,最后将结果回传到客户端进行显示。asp.net 2.0提供了实现无刷新回调的接口ICallbackEventHandler.为了实现客户端回调,你必须实现一个ICallbackEventHandler接口,该接口定义了两个方法法RaiseCallbackEvent和GetCallbackResult. RaiseCallbackEvent()从浏览器接受一个字符串作为事件参数,即该方法接受客户端JavaScript传递的参数,注意它是首先触发的。接下来触发的就是GetCallbackResult()方法,它将所得到的结果传回给客户端的JavaScript,JavaScript再将结果更新到页面。下面以实例说明:

 
Code
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq; namespace Ajax
{
    /**//*ICallbackEventHandler接口封装了从客户端的JavaScript通过XmlHttp方式调用服务器端的代码,
     * 所以只要在页面中实现了这个接口,便可以无需要使用其它的Ajax框架
     * 或是自己动手写XmlHttp请求这两种方式实现异步回调,可以避免回发过程中带来的页面刷新,
     * 这样不但减少了页面刷新的延时而且服务端无需处理每次回发的大量视图状态(View State)信息,
     * 应用程序的整体性能会有很大的提高。
     */
    public partial class AjaxCall : System.Web.UI.Page,ICallbackEventHandler
    {
        protected void Page_Load(object sender, EventArgs e)
        {         }         string text = string.Empty;
        /**//*ICallbackEventHandler 接口。
        继承这个接口需要实现两个方法RaiseCallbackEvent和GetCallbackResult,
        其中,RaiseCallbackEvent用来处理客户端提交的请求,RaiseCallbackEvente有一个string类型的参数,
        是客户端提交到服务器端的参数。而GetCallbackResult方法则负责把服务器端的处理结果返回到客户端。
        */        //GetCallbackResult方法则负责把服务器端的处理结果返回到客户端。
        public string GetCallbackResult()
        {
            return text;
        }
        //RaiseCallbackEvent用来处理客户端提交的请求,RaiseCallbackEvente有一个string类型的参数,是客户端提交到服务器端的参数
        public void RaiseCallbackEvent(string eventArgument)
        {
            text =eventArgument+"---------"+DateTime.Now.ToLocalTime().ToString();
        }
        
    }
}  

前台代码如下:

 
Code
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>AJAX回调模式</title>
    <script type="text/javascript">
    //回调函数
    function receiveServerData(arg,context)
    {
        document.getElementById("result").innerHTML=arg;
    }
    /**//* 为了向服务器页发送回调和接收结果这两个功能,
    可以在客户端定义两个脚本函数来实现用ClientScriptManager类
    的GetCallbackEventReference方法在客户端注册一个向服务器端发送请求的函数。
    Page.ClientScript获得页面的ClientScriptManager引用,GetCallbackEventReference注册发送回调请求的函数。
    */
    
    /**//*
      public string GetCallbackEventReference (Control control,string argument,string clientCallback,string context)   参数 作用 
control 处理客户端回调的服务器 Control。该控件必须实现 ICallbackEventHandler 接口并提供 RaiseCallbackEvent 方法。  
argument  从客户端脚本传递一个参数到服务器端的RaiseCallbackEvent 方法。  
clientCallback  一个客户端事件处理程序的名称,该处理程序接收服务器端事件返回的结果。 
context 启动回调之前在客户端的客户端脚本信息。脚本的结果传回给客户端事件处理程序。  
返回值 调用客户端回调的客户端函数的名称。 
*/
    function callServer(arg,context)
    {
        <%=ClientScript.GetCallbackEventReference(this,"arg","receiveServerData","context") %>;
    }
    
  //---------------------------------------------  
    function RServerData(arg,context)
    {
       context.value=arg;
    }
    function Call(Input,context)
    {   
        arg=Input.value;
        <%=ClientScript.GetCallbackEventReference(this,"arg","RServerData","context") %>;
    }
    </script>
</head>
<body>
    <form id="form1" runat="server">
<input type="button" value="Submit" onclick="callServer()" />
   
<div id="result"> </div>
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
     <input id="button" type="button" value="submit" onclick="Call(TextBox1,TextBox2)"/>
    <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
    </form>
</body>
</html>

Asp.net中的ajax回调模式(ICallbackEventHandler)的更多相关文章

  1. 在Asp.Net MVC中用Ajax回调后台方法

    在Asp.Net MVC中用Ajax回调后台方法基本格式: var operData = ...; //传递的参数(action中定义的) var type = ...; //传递的参数(action ...

  2. ASP.Net 中操作Ajax

    有时候,越深入去了解一个点,越发觉得自己无知,而之前当自己晓得一两个片面的点还洋洋自得,殊不知,这是多么讽刺,JQuery中有很多优势,比如异步提交值,部分刷新,给用户很好的体验感.目前为止,大部分项 ...

  3. Objective-C中的Block回调模式

    在前面的博客中提到了Block的概念和使用方法,个人感觉Block最爽的用法莫过于在回调时用block.感觉比委托回调和目标方法回调用着要顺手,好不好用还得读者亲自用一下才知道.如果 读者之前用过SS ...

  4. 在ASP.MVC中使用Ajax

    Asp.net MVC 抛弃了Asp.net WebForm那种高度封装的控件,让我们跟底层的HTML有了更多的亲近.可以更自由.更灵活的去控制HTML的结构.样式和行为.Asp.net MVC可以更 ...

  5. ASP.NET中实现Ajax分页

    在页面中指定一个div容器来接收动态生成的分页数据: <div id="div_menu"> </div> 使用jQuery来请求并处理Json格式数据: ...

  6. 在asp.net中使用ajax记录

    一.问题描述 ajax在mvc中使用频繁,比如cms中的评论功能,但由于涉及到前后端开发,日久容易忘,在此做下记录. 二.内容 控制器中代码示例: /// <summary> /// 在文 ...

  7. Asp.net中Postback及Callback

    我们知道,在默认的情况下,当我们点击Asp.net Page中的一个服务器Button时(默认其实是Submit Form),会导致Page被Recreated,这个过程我们称之为Postback,它 ...

  8. ASP.NET中Ajax的用法

    在ASP.NET中应用Ajax的格式如下: 前台代码(用JQuery库) $.ajax({ type: "POST", async: true, url: "../Aja ...

  9. IOS开发之自定义Button(集成三种回调模式)

    前面在做东西的时候都用到了storyboard,在今天的代码中就纯手写代码自己用封装个Button.这个Button继承于UIView类,在封装的时候用上啦OC中的三种回调模式:目标动作回调,委托回调 ...

随机推荐

  1. 今天在Mac机器上使用了Flex Builder编辑了一个源代码文件,保存后使用vim命令去打开时发现系统自动在每一行的结尾添加了^M符号,其实^M在Linux/Unix中是非常常见的,也就是我们在Win中见过的/r回车符号。由于编辑软件的编码问题,某些IDE的编辑器在编辑完文件之后会自动加上这个^M符号。看起来对我们的源代码没有任何影响,其实并不然,当我们把源代码文件Check In到svn之类

    今天在Mac机器上使用了Flex Builder编辑了一个源代码文件,保存后使用vim命令去打开时发现系统自动在每一行的结尾添加了^M符号,其实^M在Linux/Unix中是非常常见的,也就是我们在W ...

  2. weblogic10.3.6 自动启动服务后停止的解决方案

    windows部署weblogic后,需要手动开启weblogic管理员服务器,即Start Admin Server for Weblogic Server Domain,不过这样的话每次重启或者不 ...

  3. 15 个很棒的 Bootstrap UI 界面编辑器

    Bootstrap Magic BootSwatchr Bootstrap Live Editor Fancy Boot Style Bootstrap Lavish Bootstrap ThemeR ...

  4. 安卓系统上安装.net运行时 mono runtime

    感谢以下博主: ubuntu指南 http://dawndiy.com/archives/229/ img大小调整 http://zebinj.blog.163.com/blog/static/206 ...

  5. Fragment之间的通信

    在本节中,你会学到 1.定义接口 2.实现接口 3.将消息传递给fragment 为了重用Fragment UI 组件,在设计中你应该通过定义每一个fragemnt自己的layout和行为,让frag ...

  6. 简洁清新的box样式

    小菜今天偶然打开了腾讯公益,本来是冲着公益活动去的,没想到腾讯公益界面做的还不错,索性把它的box样式剽窃了下来. 个人觉得腾讯的东西普遍比较精致,就拿页面来说,每一个细节都把握的很到位,例如取色,看 ...

  7. 使用jsdoc-toolkit实现JS API文档自动化

    在前面的博文中探讨自动化工程问题时,写过基于NodeJS的,使用gulp.grunt的jsdoc插件实现文档自动化.本文探讨基于java环境的自动化实现. 一.Java安装与环境配置 关于Java的安 ...

  8. Atitit. .net c# web 跟客户端winform 的ui控件结构比较

    Atitit. .net c# web 跟客户端winform 的ui控件结构比较 .net   4.5 webform Winform 命名空间 System.Web.UI.WebControls ...

  9. paip.获取地理位置根据Ip

    paip.获取地理位置根据Ip html转换txt 正则表达式截取mid 作者Attilax  艾龙, EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http:// ...

  10. paip. 定时 关机 休眠 的总结

    paip. 定时 关机 休眠 的总结 //////////////////title bat shell 批处理日期时间的使用比较. bat shell 批处理if else 多行.. 作者Attil ...