.NET中CallBack的回调技术

      .NET2.0开始提供了一个新的用于指示控件可以作为服务器的回调事件的目标的接口ICallbackEventHandler,通过这个接口提供的方法,也可以实现页面的局部更新效果。
      ICallbackEventHandler主要提供了两个方法:
    (1) string GetCallbackResult();
     没有参数,返回数据类型为字符串型,返回的内容是回调事件执行的结果。
    (2)void RaiseCallbackEvent(string eventArgment);
      没有返回值,参数类型是字符串类型,这个参数一般用于客服端和服务器端之间传递的数据参数。
     一个控件要局部回调功能,它就必须实现ICallbackEventHandler这个接口,在客户端要获取服务器端GetCallBackResult返回的结果,就需要调用
public string GetCallbackEventReference(Control control,string argument,string clientCallback,string context)
这个方法,其中control表示处理客户端回调的服务器控件,也就是实现了ICallbackEventHandler接口的控件。argument是从客户端传给服务器端方法void RaiseCallbackEvent(string eventArgment)的那个参数。clientCallback是客服端处理程序的名称,该程序处理的的服务器端GetCallbackResult方法返回的字符串。context,启动回调之前在客户端计算的客户端脚本,又称脚本上下文。
      下面写一个简单的示例代码,很简单,不做过多说明。
       (一)客户端代码
ContractedBlock.gif ExpandedBlockStart.gif Code
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    
<title>无标题页</title>
    
<script type="text/javascript">
    
function callbackDo()
    {
    
var resultStr=window.document.getElementById("Text1").value;
    
<%=this.ClientScript.GetCallbackEventReference(this,"resultStr","getResult",null%>
    }
    
function getResult(dataStr)
    {
    document.getElementById(
"mytext").innerHTML = dataStr;
    }
    
</script>
</head>
<body>
    
<form id="form1" runat="server">
    
<div>
     
<div>
         
<input id="Text1" type="text" /></div>
    
<div><input id="Button1" type="button" value="button"  onclick="callbackDo()"/></div>
    
<div id="mytext"></div>
    
</div>
    
</form>
</body>
</html>

      (二)服务器代码
ContractedBlock.gif ExpandedBlockStart.gif Code
public partial class Default2 : System.Web.UI.Page,ICallbackEventHandler
{
    
string resultStr = "";
    
protected void Page_Load(object sender, EventArgs e)
    {

    }

    
public void RaiseCallbackEvent(string eventArgument)
    {
        resultStr 
= "从服务器处理后返回了" + eventArgument;
    }

    
public string GetCallbackResult()
    {
        
return resultStr;
    }
}

      (三)测试结果
在输入框输入“博客园”,单击按钮button,页面无刷新显示“从服务器处理后返回了博客园”

转载于:https://www.cnblogs.com/zoupeiyang/archive/2009/08/17/1547973.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值