• ASP.NET 事件(回传)机制


    摘要: ASP.ENT中,有两种实现页面PostBack的机制,不管是哪种回传方式,最终均是Form表单提交。

    一、原始的Form表单提交

    WebControls中的Button和ImageButton控件,到客户端会转换为 

    Html代码

    <input type="submit" name="" /> 
    <input type="image" name=""/>
    二、利用JavaScript和隐藏表单实现表单提交

    除Button和ImageButton外,其他WebControls控件均是以这种方式实现页面回传机制的。具体步骤如下: 1、如果页面中存在除Button和ImageButton外的服务端控件,ASP.NET页面框架会自动在页面中增加两个隐藏表单。

    Html代码

    <input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" /> 
    <input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />

    2、服务端自动生成如下的JavaScript方法,处理事件的发送。

    Javascript代码

    <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>  
    

    3、每个会引发服务端事件的控件都会在响应的客户端事件中调用上面的代码。 以<asp:LinkButton>服务端控件为例说明,以下为服务端到客户端的映射:

    Html代码

    <a id="LinkButton1" href="javascript:__doPostBack('LinkButton1','')">LinkButton</a>
     
    注意:<asp:Checkbox>、<asp:TextBox>等服务器控件不自动生成在客户端调用JS的__doPostBack方法

    4.客户端触发事件后调用__doPostBack方法,将表示触发的控件源的eventTarget 和事件参数eventArgument分别付给两个隐藏域__EVENTTARGET和__EVENTARGUMENT,然后提交Form,在服务端根据__EVENTTARGET和__EVENTARGUMENT来判断是哪个控件的什么事件触发了。

  • 相关阅读:
    Javascript-逻辑运算符(&&)
    Javascript-蔬菜运算价格
    Javascript-涨工资案例
    Javascript-数据类型转换
    Javascript-数据类型转换 、 运算符和表达式
    HTML5表单及其验证
    /*使用PHP创建一个数组,保存5個员工的信息(ename/sex/salary/birthday/pic)*/
    CERC2013(C)_Magical GCD
    UVA12546_LCM Pair Sum
    UVA12545_Bits Equalizer
  • 原文地址:https://www.cnblogs.com/wadeheng/p/2825634.html
Copyright © 2020-2023  润新知