zoukankan      html  css  js  c++  java
  • __doPostBack用法感悟(转)

    今天遇到了__doPostBack函数,在网上看到了很多关于__doPostBack使用的方法,但是感觉说法都有些出入,或者不清楚。因此也让我这个本来一向喜欢引用别人东西的人忍不住要在自己的博客里面留下自己的一点原创了。。
    言归正传,首先要记住这个函数的前面是两个下划线. __doPostBack=  "_" + "_" + "doPostBack".
    再介绍一下__doPostBack函数的作用。我们先来看一下_doPostBack函数的内容:
    <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="/wEPDwULLTE4NDIzMDg2NDRkZMlHJoBQ9CYcWBtBK+zrfZzKoh/i" />
    </div>
    <script type="text/javascript">...
    <!--
    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>
        <div>
    上面这段是直接从含有自动回传功能控件的.net Web页面的HTML源代码里面粘帖过来的。
    其中eventTarget 和eventArgument,是两个就是用来存储在回送的时候获取是哪个控件触发了回送,并且带了什么参数。总之,调用__doPostBack函数可以实现客户端控件调用服务器端控件的响应。或者是在javascript里面调用.net的服务器控件事件。这一点可以充分用在子窗口调用父窗口中某个服务器控件的服务器端的事件。
     然后我们可以从LinkButton这个控件入手,分析一下 LinkButton的工作流程,就知道__doPostBack的使用方法了。因为微软的LinkButton就是使用__doPostBack函数来达到使用客户端的控件来调用服务器端的函数的。
    我们可以运行一个包含有LinkButton的aspx页面,查看他的源代码,发现关于LinkButton这个控件的代码竟然是一个超链接:
    aspx中LinkButton的代码:
    <asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click">button1</asp:LinkButton>
    在html中的源码中被翻译成了:
    <a id="LinkButton1" href="javascript:__doPostBack('LinkButton1','')">button1</a>
    上面的代码可以明显的看出,LinkButton只不过就是一个超链接,他的链接就是执行javascript语句通过调用__doPostBack函数来调用服务器端的后台代码的。因此,在有LinkButton的页面,会自动加上上面的__doPostBack函数。
    但是在我们调用__doPostBack函数时,有些时候调用这个函数会出现"对象不存在"的脚本错误? 那是因为Html里面没有__doPostBack函数体,一般在拖放那些有自动回传功能的控件时,当把他的autoPostback属性设为True,在运行的时候系统会自动添加__doPostback函数体,当然最直接的办法就是添加一个LinkButton然后把其Text属性设为空,切记不要设Visible属性,因为如果Visible=false,在翻译成Html时,直接就忽略LinkButton的存在了。
    本文来自CSDN博客,原文地址:http://blog.csdn.net/kucool/archive/2007/11/22/1898116.aspx
  • 相关阅读:
    LeetCode 1245. Tree Diameter
    LeetCode 1152. Analyze User Website Visit Pattern
    LeetCode 1223. Dice Roll Simulation
    LeetCode 912. Sort an Array
    LeetCode 993. Cousins in Binary Tree
    LeetCode 1047. Remove All Adjacent Duplicates In String
    LeetCode 390. Elimination Game
    LeetCode 1209. Remove All Adjacent Duplicates in String II
    LeetCode 797. All Paths From Source to Target
    LeetCode 1029. Two City Scheduling
  • 原文地址:https://www.cnblogs.com/myitm/p/1553160.html
Copyright © 2011-2022 走看看