【问题标题】:What is the difference between client browser's submit mechanism and the ASP.NET postback mechanism?客户端浏览器的提交机制和 ASP.NET 回发机制有什么区别?
【发布时间】:2011-06-05 20:54:28
【问题描述】:

Button.UseSubmitBehavior property 用于获取或设置一个值,该值指示 Button 控件是使用客户端浏览器的提交机制还是 ASP.NET 回发机制。

那么,客户端浏览器的提交机制和ASP.NET的回发机制有什么区别呢?

【问题讨论】:

    标签: asp.net button postback submit


    【解决方案1】:

    根据您引用的文档,默认行为似乎使用表单中的标准提交按钮提交表单,而将其设置为 false 将改为执行以下操作:

    <input type=button onclick="submitForm()" />
    

    默认的表单行为是:

    <form><input type=submit /></form>
    

    【讨论】:

    • 是的,我知道,但是回发机制有何不同?
    • 应该是一样的,都生成一个POST到服务器。好吧,从技术上讲,表单方法可以是 GET,因此不会导致 POST。
    【解决方案2】:

    如果将使用提交行为设置为 false,ASP.NET 将通过调用“__doPostBack”方法生成脚本来处理提交,如以下代码。该方法将为事件目标添加值,以告诉服务器哪个元素触发当前事件。

    <script type="text/javascript">
    //<![CDATA[
    var theForm = document.forms['ctl00'];
    if (!theForm) {
        theForm = document.ctl00;
    }
    function __doPostBack(eventTarget, eventArgument) {
        if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
            theForm.__EVENTTARGET.value = eventTarget;
            theForm.__EVENTARGUMENT.value = eventArgument;
            theForm.submit();
        }
    }
    //]]>
    </script>
    
    <input type="button" name="Button1" value="Submit" onclick="javascript:__doPostBack('Button1','')" id="Button1">      
    

    另一方面,如果将使用提交行为设置为 true,ASP.NET 将生成按钮作为输入类型提交而不是类型按钮。使用时点击该按钮,表单会正常提交。

    <input type="submit" name="Button1" value="Submit" id="Button1">
    

    这两种方式在服务器端没有区别。但是如果你将使用提交行为设置为 true,它会生成更清晰的 XHTML。

    【讨论】:

      猜你喜欢
      • 2011-04-13
      • 1970-01-01
      • 1970-01-01
      • 2022-01-13
      • 1970-01-01
      • 1970-01-01
      • 2021-11-20
      • 2010-10-23
      • 2015-10-27
      相关资源
      最近更新 更多