1. 整个callback过程的服务器端动作是否就是pageload --> RaiseCallbackEvent(处理)--> GetCallbackResult(return处理结果)?2. 接着上一个问题:如果是这样,那么如果一个页面要实现多个callback我在.aspx.cs文件里面该怎么写呢?我要如何在GetCallbackResult和RaiseCallbackEvent这两个函数中分别处理这些callback呢?3. 这个问题还涉及到.net控件开发,现在我想开发一个ajax控件使用callback机制提高控件性能,但是遇到以下这个问题:我希望能把RaiseCallbackEvent和GetCallbackResult这两个函数暴露给控件的使用人员,让他们定义callback之后的服务器处理过程,该如何实现呢?请各位对callback理解较深刻的高手们帮我解惑!万分感谢!

解决方案 »

  1.   

    第二个问题我自己想了个办法:
    把标识每个callback的变量放到URL里边去,一起post到服务器,利用它来区分
    大家还有没有别的更好的办法?
      

  2.   

    第二个问题没看懂,一次页面生成就只有一次callback啊?这次callback是可以多个数据的。
    第三个问题用事件吧
      

  3.   

    在你的自定义控件中增加一个事件,然后在RaiseCallbackEvent中加上调用该事件的方法。但订阅事件的代码写在哪里呢?呵呵
      

  4.   

    建议先明白下下 怎么用吧都不知道怎么用,就知道几个单词,而且还有错的问题当然解决不了你去谷歌下  ASP.NET的回调  这个关键词,应该有具体怎么实现的,等知道怎么实现了,在加个断点,明白下流程我做过,但是代码还是不少的,我大概贴点
    后台:
     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");
    }大概是这样
      

  5.   

    1.这是两个必须实现的接口。不是说就这两个动作。其他动作帮你处理了。
    2.多个callback还是在RaiseCallbackEvent处理,只不过是参数不同。
    3。要暴露给控件的使用人员可以通过事件来触发,但是如果这样,那个控件就不是个完整的控件了。
    因为GetCallbackResult是要返回html的,也就是控件最后生成的html,如果这个都要调用者来实现,那这个控件
    究竟起什么作用?
      

  6.   

    看来这边高手不少啊!!
    我自己琢磨了5个小时已经把问题3解决了,用的就是事件,上来一看才发现已经有高人点出来了
    9楼的仁兄问得好,这也是我下一步在思考的问题,我的考虑是用Context把要刷新区域的html传递给客户端的callback回传信息处理函数,这样就不用程序员去拼html只需要他以一定的格式输出就可以了,这个想法还在试验中