【问题标题】:Why this button doesn't cause triple postback?为什么这个按钮不会导致三次回发?
【发布时间】:2011-02-21 19:36:08
【问题描述】:

我们已经开发了一个带有 asp.net 的页面并在调试它时意外发现我们的页面按钮上带有 onclik 属性上的下一个代码

onclick="__doPostBack('ctl00$FormPlace$m_userTaskMarkAsUnreadButton',''); __doPostBack('ctl00$FormPlace$m_userTaskMarkAsUnreadButton','');WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$FormPlace$m_userTaskMarkAsUnreadButton", "", true, "", "", false, false))"

似乎该按钮执行了三个回发,但是当我们单击它时,它只会导致回发。使用此代码似乎 de 按钮将导致三个回发!

我们已经在 Internet Explorer 和 Firefox 上进行了尝试,并且该按钮始终只在回发时引起。避免按钮执行三个回发的浏览器是吗?或者是Asp.net server 的那位避免了三个postback?如果 onclick 属性有三个调用来执行回发,我们不明白为什么按钮行为正确。

谢谢

【问题讨论】:

    标签: asp.net javascript html button postback


    【解决方案1】:

    如果调用的第一个 JavaScript 函数导致页面 POST 您的数据(不使用 XMLHttpRequest),则会加载一个新页面并停止执行您的 JavaScript。

    【讨论】:

      【解决方案2】:

      第一个 __doPostback 将立即发布页面。剩下的两条语句永远不会被执行。

      【讨论】:

        【解决方案3】:

        __doPostBack 用给定的参数填充两个隐藏字段,然后提交给服务器。 javascript 后面的所有内容都无关紧要,因为页面将被破坏和重建。

        【讨论】:

          【解决方案4】:

          我知道我在这里重新发明轮子...但实际上是 __doPostBack..回发所以当第一次执行 __doPostBack 时,您所在的页面已经消失了。

          顺便说一句,这样做听起来很狡猾.. 为什么不调用一个方法并在后端执行 3 次?

          另外..这取决于您是否使用 UpdatePanels..

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2021-01-03
            • 1970-01-01
            • 1970-01-01
            • 2017-04-26
            • 1970-01-01
            • 2013-08-02
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多