首先客户端有个触发回到的事件,在这我把它设置成按钮的Click事件:
<input id="Button2" type="button" value="Aysn Call" onclick="button_click()" />
1.此事件向服务器端发送请求:
function button_click() {
var args = document.forms[0]['TextBox1'].value;
<%=ClientScript.GetCallbackEventReference(this,"args","GetResultFromServer","" )%>}
this:必须实现System.Web.UI.ICallbackEventHandler这个借口
“args":这是客服端发送过来的参数被传送给System.Web.UI.ICallbackEventHandler.RaiseCallbackEvent(System.String) 方法
此方法在”this"中实现。
“GetResultFromServer”:客服端 事件处理函数,它接受服务器端成功处理的结果。
context:在客服端开始回调之前被解析的客服端脚本,结果被传送到客服端事件处理函数中,也即上面的“GetResultFromServer".
2.服务器端接受到请求后调用ClientScript.GetCallbackEventReference(.....),处理完成后引发
ICallbackEventHandler.RaiseCallbackEvent(string args)这个服务器回调事件:
public void RaiseCallbackEvent(string eventArgument(=args))
{
if (string.IsNullOrEmpty(eventArgument))
_result = "我来自回调,我被部分刷新";
else
_result = "Hi, 我来自回调,我被部分刷新";
};
3.服务器回调事件处理完成后,返回结果给ICallbackEventHandler.GetCallbackResult(),
这个函数把结果放到ICallbackEventHandler的GetCallbackResult()中,它会自动发送给客户端:
public string GetCallbackResult()
{
return "Hello " + _result;
};
4,客户端函数“GetResultFromServer”,接受结果并做处理:
function GetResultFromServer(value,context)
{
document.forms[0]['TextBox1'].value= value(="Hello " + _result);
}
回调事件的完整过程。