zoukankan      html  css  js  c++  java
  • GetCallbackEventReference对我来说太复杂了

    今天看到GetCallbackEventReference的函数,然后想试一下。
    先是找到这种说法http://tech.sina.com.cn/s/2006-04-20/1522911788.shtml。但在aspx中用<%=ClientScript.GetCallbackEventReference(this, ......)%>,老是不成功,这种写法到底是什么时候被支持,什么时候不被支持,我也不想搞清楚了。
    后来找到另一种表达方法:http://hi.baidu.com/analyzecode/blog/item/b5fdf1110a5be2c6a7ef3fb1.html,这可以成功,这下才能了解一下。
    程序运行后,页面被多加了以下内容:
    <div>
    <input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
    <input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
    <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKLTI1ODcyNDQxMmRkT2Aj0VhN7+7C5M18riIUFQnBHIQ=" />
    </div>

    <script type="text/javascript">
    //<![CDATA[
    var theForm = document.forms['form1'];
    if (!theForm) {
        theForm = document.form1;
    }
    function __doPostBack(eventTarget, eventArgument) {
        if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
            theForm.__EVENTTARGET.value = eventTarget;
            theForm.__EVENTARGUMENT.value = eventArgument;
            theForm.submit();
        }
    }
    //]]>
    </script>

    <script src="/WebResource.axd?d=ZQ2twBFhD9k59lqjqvMlNA2&amp;t=633661865561421920" type="text/javascript"></script>

    <script type="text/javascript">
    //<![CDATA[
    function ReceiveServerData1(arg, context){context.innerHTML =  arg;}
    function ProcessCallBackError(arg, context){alert('An error has occurred.');}
    function CallTheServer1(arg, context) {WebForm_DoCallback('__Page',arg,ReceiveServerData1,context,ProcessCallBackError,false); }//]]>
    </script>

    <div>
     <input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWAgKc/oPPAwLp06QgRFoiATcn2oduty9HnpFvP0qeO1I=" />
    </div>
    执行过程如下:点击按钮时,执行CallTheServer1,里面又跑到WebForm_DoCallback,这里面,有明显的
    xmlRequest = new XMLHttpRequest();
    ……
    xmlRequest.open("POST", theForm.action, true);
    xmlRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
    xmlRequest.send(postData);
    原来还是xmlHttp。

    比较一下,如果使用这种方法,要增加接口System.Web.UI.ICallbackEventHandler以及它的两个方法GetCallbackResult、RaiseCallbackEvent,其中GetCallbackResult为处理程序。然后在Page_Load中至少要用GetCallbackEventReference生成一个脚本注册上去。然后系统还附加了一堆其它代码,以及一个复杂的JS文件。不划算!

    而用自己的方法则是代码中直接使用xmlHttp,带参数传递到服务器,然后服务器的Page_Load中进行区分,服务器一般只要一个处理程序即可。还是先用自己的方法吧。

  • 相关阅读:
    java 类加载机制总结
    栈和队列的java简单实现
    java内存模型个人理解总结
    Day12-微信小程序实战-交友小程序-搭建服务器与上传文件到后端并控制云开发数据库-项目总结与github代码发布流程(附上项目全部完整代码学习使用)
    Day12-微信小程序实战-交友小程序-优化“附近的人”页面与serach组件的布局和样式以及搜索历史记录和本地缓存*内附代码)
    CSS-好玩的样式(用高斯模糊制作平缓突起)
    Day18-PHP-入门2
    Day18-PHP-入门1
    Day17-JS-jQuery
    Day17-JS进阶-线程机制和事件机制
  • 原文地址:https://www.cnblogs.com/yzx99/p/1378927.html
Copyright © 2011-2022 走看看