先贴实例代码,关于实现机制还在研究当中(比如回调是如何调用的,为什么能做到无刷新等等)
aspx文件代码:

<%...@ Page Language="C#" AutoEventWireup="true" CodeFile="Default6.aspx.cs" Inherits="Default6" %>

<!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 id="Head1" runat="server">
<title>Callback Page</title>

<script type="text/javascript">...
//发起客户端回调的函数
function GetNumber()

...{
alert("GetNumber()");
UseCallback();
}
//接收回调的客户端函数
//接收函数接受两个字符串值:一个用于返回值,另一个(可选)用于从服务器传回的上下文值。
function GetRandomNumberFromServer(number,context)

...{
alert("GetRandomNumberFromServer");
document.forms[0].TextBox1.value = number;
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<input id="Button1" type="button" value="Get Random Number" onclick="GetNumber()"/>
<asp:Button ID = "BtnGetNumber" Text = "GetNumber" OnClientClick = "GetNumber()" runat = "server" />
</div>
</form>
</body>
</html>
后台代码:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class Default6 : System.Web.UI.Page,System .Web .UI .ICallbackEventHandler

...{
private string _callbackResult = null;

protected void Page_Load(object sender, EventArgs e)

...{
//判断浏览器是否支持通过Http接收XML
if (Page.Request.Browser.SupportsXmlHttp == true)

...{
//获取一个对客户端函数的引用;调用该函数时,将启动一个对服务器端事件的客户端回调。
//此重载方法的客户端函数包含:
//指定的控件(要实现ICallbackEventHandler接口)、参数(由RaiseCallbackEvent()方法返回)、客户端脚本(客户端函数名)和上下参数。
string cbReference = Page.ClientScript.GetCallbackEventReference(this, "arg", "GetRandomNumberFromServer","context");
//生成客户端脚本
string cbScript = "function UseCallback(arg, context)" + "{" + cbReference + ";" + "}";
//注册客户端脚本
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "UseCallback", cbScript, true);
}
}


ICallbackEventHandler 成员#region ICallbackEventHandler 成员


/**//// <summary>
/// 回调的处理方法,ICallbackEventHandler的方法
/// </summary>
/// <param name="eventArg"></param>
public void RaiseCallbackEvent(string eventArg)

...{
Random rnd = new Random();
_callbackResult = rnd.Next().ToString();
}


/**//// <summary>
/// 返回回调结果,ICallbackEventHandler的方法
/// </summary>
/// <returns></returns>
public string GetCallbackResult()

...{
return _callbackResult;
}

#endregion
}