zoukankan      html  css  js  c++  java
  • 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来判断是哪个控件的什么事件触发了。

  • 相关阅读:
    二测试组织
    如何编写测试计划
    C#三种字符串拼接方法的效率对比
    CSS内容溢出时,显示省略号
    JQuery文件上传控件Uploadify文档
    LINQ to Entities 不识别方法“Boolean Like(System.String, System.String)”,因此该方法无法转换为存储表达式。
    Linux 各目录的作用
    服务器注释事项
    资料:mnist.pkl.gz数据包的下载以及数据内容解释
    RockPaperScissorsLizardSpock Python实现
  • 原文地址:https://www.cnblogs.com/wadeheng/p/2825634.html
Copyright © 2011-2022 走看看