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中进行区分,服务器一般只要一个处理程序即可。还是先用自己的方法吧。

  • 相关阅读:
    甘草
    html2pdf
    gitlab jenkins 安装笔记
    mac phpbrew安装
    域名解析各项记录对应的值
    网站添加ico图标
    dom控制
    webstrom 代码工具(转http://www.cnblogs.com/tangdanni11/p/5149063.html)
    http协议(转http://www.cnblogs.com/guguli/p/4758937.html)
    预解析机制
  • 原文地址:https://www.cnblogs.com/yzx99/p/1378927.html
Copyright © 2011-2022 走看看