У меня есть UpdatePanel на довольно медленной странице. Его UpdatePanel настроен на обновление условно. Проблема, с которой я сталкиваюсь, заключается в том, что UpdatePanel выполняет частичную обратную передачу сразу же после того, как вы будете обработаны клиентами. Мои вопросы:
Спасибо за вашу помощь.
Разметка:
<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.
ОК, ваш 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:
поэтому вы можете скопировать и вставить этот код, чтобы проверить результат в конце.