1. 整个callback过程的服务器端动作是否就是pageload --> RaiseCallbackEvent(处理)--> GetCallbackResult(return处理结果)?2. 接着上一个问题:如果是这样,那么如果一个页面要实现多个callback我在.aspx.cs文件里面该怎么写呢?我要如何在GetCallbackResult和RaiseCallbackEvent这两个函数中分别处理这些callback呢?3. 这个问题还涉及到.net控件开发,现在我想开发一个ajax控件使用callback机制提高控件性能,但是遇到以下这个问题:我希望能把RaiseCallbackEvent和GetCallbackResult这两个函数暴露给控件的使用人员,让他们定义callback之后的服务器处理过程,该如何实现呢?请各位对callback理解较深刻的高手们帮我解惑!万分感谢!
把标识每个callback的变量放到URL里边去,一起post到服务器,利用它来区分
大家还有没有别的更好的办法?
第三个问题用事件吧
后台:
string sHugeCallBackFunctionInvocation = Page.ClientScript.GetCallbackEventReference(this, "hg_message", "processCallbackResult", "hg_context", "postBackError", true); 继承 ICallbackEventHandler 实现接口里的方法前台:
function hg_processCallbackResult(returnvalue, ctx){
alert("processCallbackResult");
}
function hg_postBackError(){
alert("postBackError");
}大概是这样
2.多个callback还是在RaiseCallbackEvent处理,只不过是参数不同。
3。要暴露给控件的使用人员可以通过事件来触发,但是如果这样,那个控件就不是个完整的控件了。
因为GetCallbackResult是要返回html的,也就是控件最后生成的html,如果这个都要调用者来实现,那这个控件
究竟起什么作用?
我自己琢磨了5个小时已经把问题3解决了,用的就是事件,上来一看才发现已经有高人点出来了
9楼的仁兄问得好,这也是我下一步在思考的问题,我的考虑是用Context把要刷新区域的html传递给客户端的callback回传信息处理函数,这样就不用程序员去拼html只需要他以一定的格式输出就可以了,这个想法还在试验中