为什么这个按钮不会导致三重回发?

时间:2010-05-20 11:01:46

标签: asp.net javascript html button postback

我们已经开发了一个带有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服务器谁避免三回发?如果onclick属性有三个调用来做回发,我们不明白为什么按钮行为正确。

由于

4 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:3)

第一个__doPostback会立即发布页面。其余两个陈述永远不会被执行。

答案 2 :(得分:3)

__ doPostBack使用给定参数填充两个隐藏字段,然后提交给服务器。后来在javascript中出现的所有内容都无关紧要,因为页面将被销毁并重建。

答案 3 :(得分:1)

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

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

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