zoukankan      html  css  js  c++  java
  • asp.net页面回传与js调用服务端事件,Postback的原理

    Asp.net 中在客户端触发服务器端事件分为两种情况:
    一.   WebControls中的Button 和HtmlControls中的Type为submit的HtmlInputButton
    这两种按钮最终到客户端的表现形式为:<input type="submit" value="Submit">,这是Form表单的提交按钮,点击以后会作为参数发送到服务端,参数是这样的:
    控件的name属性=控件的value值,对应上面的例子就是:Submit1= Submit。服务器端会根据接收到的控件的name属性的这个key来得知是这个按钮被点击了,从而在服务端触发这个按钮的点击事件。
    二.   HtmlControls 中的 Type为button的HtmlInputButton 和其它所有的控件事件,比如LinkButton点击,TextBox的Change事件等等:
    这些事件在客户端产生后会经过一个统一的机制发送到服务端。
    1.首先asp.net页框架会使用两个Hidden域来存放表示是哪个控件触发的事件,以及事件的参数:
    <!—表示触发事件的控件,一般是这个控件的name -->
    <input type="hidden" value="" />
    <!—表示触发事件的参数,一般是当某个控件有两个以上的事件时,用来区别是哪个事件 -->
    <input type="hidden" value="" />
    2.服务端会生成一个jscript的方法来处理所有这些事件的发送,这段代码是:
    <script language="javascript" type="text/javascript">
        function __doPostBack(eventTarget, eventArgument)
        {
            var theform = document.WebForm2;
            theform.__EVENTTARGET.value = eventTarget;
            theform.__EVENTARGUMENT.value = eventArgument;
            theform.submit();
        }
    </script>
    3.每个会引发服务端事件的控件都会在响应的客户端事件中调用上面的代码:
    比如,HtmlControls 中的 Type为button的HtmlInputButton的点击事件
    <!—客户端的点击事件调用__doPostBack,eventTarget 参数为'Button2',表示是name为'Button2’控件触发的事件,eventArgument 为空,表示这个Type为button的HtmlInputButton只有一个客户端触发的服务端事件-->
    <input language="javascript" Button2','')" type="button" value="Button" />
    又比如,TextB ......


    作者:水木    
     
  • 相关阅读:
    CentOS 6.4下Squid代理服务器的安装与配置
    从C++到objectivec[转]
    在Objectivec里面使用property教程【转】
    Socket常用的数据结构【转】
    iOS 5 Storyboard 学习之 Tabbar Controller,Navigation Controller (1)
    Linux Socket编程(不限Linux)
    重要的套接字函数[转]
    HTTP,TCP/IP
    网络编程socket之bind函数[转]
    linux 下遍历目录中的目录项
  • 原文地址:https://www.cnblogs.com/hsapphire/p/1617122.html
Copyright © 2011-2022 走看看