Предотвращение частичной обратной передачи UpdatePanel

1

У меня есть UpdatePanel на довольно медленной странице. Его UpdatePanel настроен на обновление условно. Проблема, с которой я сталкиваюсь, заключается в том, что UpdatePanel выполняет частичную обратную передачу сразу же после того, как вы будете обработаны клиентами. Мои вопросы:

  1. Можно ли предотвратить первую частичную обратную передачу?
  2. Это даже хорошая практика? Почему или почему нет?

Спасибо за вашу помощь.

Разметка:

        <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.

  • 0
    Обновляете ли вы панель обновления в событии загрузки страницы?
  • 0
    @DTs Нет, не на стороне сервера. У меня есть только два триггера, связанных с ним, и оба находятся на событиях нажатия кнопок.
Показать ещё 8 комментариев
Теги:
updatepanel
postback

1 ответ

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:

Изображение 174551

поэтому вы можете скопировать и вставить этот код, чтобы проверить результат в конце.

  • 0
    Вы считаете, что в своем aspx он забыл включить элементы управления, которые запускают обновление? Это невозможно, потому что он получит исключение, когда попытается открыть страницу.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню