为什么这个按钮不会导致三重回发?
问题描述:
我们已经开发了一个网页,一个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属性有三个呼叫做回传。
感谢
答
如果调用的第一个JavaScript函数导致页面发表您的数据(不使用一个XMLHttpRequest),一个新的页面加载和你的JavaScript的执行停止。
答
第一个__doPostback将立即发布页面。剩下的两个语句永远不会被执行。
答
__doPostBack用给定参数填充两个隐藏域,然后提交给服务器。所有后来在JavaScript中的内容都是无关紧要的,因为页面将被销毁和重建。
答
我知道我在这里重新发明轮子...但实际上__doPostBack .. 做回发所以当第一__doPostBack执行你上已经走了的页面。
顺便说一句,这样做听起来很狡猾..为什么不调用一种方法,并在后端做3次?
另外..它取决于您是否使用UpdatePanels ..