2

好吧,这很奇怪。

我正在使用 .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 在鼠标点击时为真,在代码点击时为假。

我不知道为什么会发生这种情况,非常感谢任何帮助。

4

1 回答 1

6

您应该定义一个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>
于 2012-10-02T15:06:07.887 回答