防止UpdatePanel部分回发

时间:2014-06-09 21:16:39

标签: c# asp.net .net updatepanel postback

我在一个非常慢的页面上有一个UpdatePanel。其UpdatePanel设置为有条件地更新。我面临的问题是UpdatePanel会在呈现客户端时立即进行部分回发。我的问题是:

  1. 是否可以防止首次发生部分回发?
  2. 这是不是很好的做法?为什么或为什么不呢?
  3. 感谢您的帮助。

    标记:

            <asp:UpdatePanel UpdateMode="Conditional"  ChildrenAsTriggers="false" runat="server" ID="updatePnlValidationErrors">
                <ContentTemplate>
                    <span runat="server" id="validationErrors" class="error"></span>
                </ContentTemplate>
                <Triggers>
                    <asp:AsyncPostBackTrigger EventName="Click" ControlID="btnCompletePurchase" />
                    <asp:AsyncPostBackTrigger EventName="Checkout_Click" ControlID="checkoutBox" />
                </Triggers>
            </asp:UpdatePanel>
    

    没有代码直接触及UpdatePanel。

1 个答案:

答案 0 :(得分:1)

好的,你的代码中的asyncpostbacktrigger并没有指向正确的控件,我猜你可能只是出于演示目的而消除它们,但它们对我们的测试至关重要。这是我对代码及其结果的完整模拟。

我在更新面板之外为AsyncPostBackTriggers添加了两个缺少关联控件;

 <asp:Button ID="btnCompletePurchase" runat="server" Text="Button"
             OnClick="btnCompletePurchase_Click" />
 <asp:CheckBox ID="checkoutBox" runat="server" 
               OnCheckedChanged="checkoutBox_CheckedChanged" />

,您的代码将如下所示:

 <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>

 <asp:Button ID="btnCompletePurchase" runat="server" Text="Button"
             OnClick="btnCompletePurchase_Click" />
 <asp:CheckBox ID="checkoutBox" runat="server" 
               OnCheckedChanged="checkoutBox_CheckedChanged" />
 <asp:UpdatePanel UpdateMode="Conditional"  ChildrenAsTriggers="false" 
                  runat="server" ID="updatePnlValidationErrors">
     <ContentTemplate>
        <span runat="server" id="validationErrors" class="error"></span>
     </ContentTemplate>
     <Triggers>
        <asp:AsyncPostBackTrigger EventName="Click" 
                                      ControlID="btnCompletePurchase" />
        <asp:AsyncPostBackTrigger EventName="CheckedChanged" 
                                      ControlID="checkoutBox" />
     </Triggers>
 </asp:UpdatePanel>

,这是第一次Page_Load事件的断点结果:

enter image description here

因此您可以复制并粘贴此代码以检查您的结果。