先看代码:
Default2.aspx:

<%...@ 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 id="Head1" runat="server">
<title>无标题页</title>

<script type="text/javascript">...
//由button调用
function CallServer(inputcontrolname, context) //可以将context 改成任意名字【这里改了下面都要改】

...{
var tempdata = document.getElementById(context.toString());//.innerHTML = "Loading";
//aa
tempdata.innerHTML = "LOADING.......";
arg = document.getElementById(inputcontrolname.toString()).value;
//注册回调方法
<%= ClientScript.GetCallbackEventReference(this, "arg", "ReceiveServerData", "tempdata")%>;
//GetCallbackEventReference方法的参数意义,可以在CS文件中查看其提示【因为ClientScript是Page类的属性,这里只是前台调用形式】
//其中tempdata 是一个临时变量,用来储存在回调之前脚本处理的结果,然后等回调结束后以便继续使用回调前处理的结果
//【即1.执行脚本并将脚本执行结果存入tempdata,2.开始回调,3.回调结束,脚本获控制权继续使用tempdata存储的数据进行计算。。。】
//即tempdata变量是为ReceiveServerData函数服务用的
}
//在回调方法中注册的接收返回结果的函数
function ReceiveServerData(res,tempdata)

...{
alert("暂存的数据为 | " + tempdata.innerHTML.toString());
tempdata.innerHTML = res;
}
</script>

</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<input id="Button1" type="button" value="提交到Label1" onclick="CallServer('TextBox1', 'Label1')"/><br/>
<asp:Label ID="Label1" runat="server" Text="Label1:"></asp:Label>

</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 Default2 : System.Web.UI.Page,ICallbackEventHandler

...{
private string temp;
protected void Page_Load(object sender, EventArgs e)

...{
//this.ClientScript.GetCallbackEventReference("", "", "", "");
}


ICallbackEventHandler 成员#region ICallbackEventHandler 成员

public string GetCallbackResult()

...{
return "客户端在[" + DateTime.Now.ToString() + "]传送来 [" + temp + "].";
}

void ICallbackEventHandler.RaiseCallbackEvent(string eventArgument)

...{
temp = eventArgument.ToString();
}

#endregion
}
Default2.aspx:
















































Default2.aspx.cs :







































其中注释已经说的很明白了,只不过参数context我存储的是上下文对象的名字(即ID),但context完全可以存储对象[其实好像也是用ID来存储对象的]