好吧,这是一个奇怪的问题。
我使用的是.net框架4。我在更新面板中有一个asp.net按钮,如下所示:
<asp:Button id="btNacinMontaze" runat="server" class="buttonOIHidden" value="nm" CausesValidation="false" onclick="btNacinMontaze_Clicked" clientidmode="Static" UseSubmitBehavior="false"/>
如果我在浏览器中点击它,它就会正常工作——updatepanel会在不刷新整个页面的情况下自行更新,就会触发正确的服务器事件。
如果我在页面内这样做:document.getElementById("btNacinMontaze").click();
整个页面将刷新,并触发正确的服务器事件。
如果我从firebug控制台中发出同一行代码,那么只会刷新updatePanel。
如果我在Chrome或IE9中加载相同的页面,它在所有情况下都可以正常工作。我在Firebug中通过调试跟踪了鼠标点击和代码点击之间的区别,并在Sys$WebForms$PageRequestManager$_doPostBack
方法中看到了行
if (!this._postBackSettings.async)
不同。async在鼠标单击时为true,在代码单击时为false。
我不知道为什么会发生这种情况,我们非常感谢您的帮助。
您应该定义一个AsyncPostBackTrigger
来停止整个页面刷新。
<asp:UpdatePanel runat="server" ID="UpdatePanel1" UpdateMode="Conditional">
<ContentTemplate>
<asp:Label ID="label" runat="server"></asp:Label>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btNacinMontaze" EventName="Click" />
</Triggers>
</asp:UpdatePanel>