AsyncPostBackTrigger не работает в моем приложении - PullRequest
0 голосов
/ 23 июля 2010

У меня возникла интересная проблема. Мы запускаем веб-сайт с использованием главной страницы, и на одной из страниц мне нужно создать панель обновления, которая будет отображать SSID группы по завершении.

Итак, в одном из заполнителей содержимого я вставил следующее:

<asp:ScriptManager ID="scManagerConfirm" runat="server" />
<asp:Timer ID="tmrStatus" OnTick="tmrStatus_Tick" Enabled="false" runat="server" Interval="5000" />
   <asp:UpdatePanel ID="upnlStatus" runat="server" UpdateMode="Conditional">
      <Triggers>
         <asp:AsyncPostBackTrigger ControlID="btnConfirm" />
         <asp:AsyncPostBackTrigger ControlID="tmrStatus" />
      </Triggers>
      <ContentTemplate>
          <asp:Panel ID="pnlStatus" CssClass="appStoreStatus" Visible="false" runat="server">
             <p><asp:Literal ID="litStatusText" runat="server" Text="<%$ Resources:GRes, StatusProcessing %>"></asp:Literal></p>
          </asp:Panel>
      </ContentTemplate>
   </asp:UpdatePanel>

   <asp:Button ID="btnConfirm" OnClick="btnConfirm_OnClick" Text="<%$ Resources:GRes, Confirm %>" CausesValidation="true" UseSubmitBehavior="false" runat="server" />

фоновый код прост:

protected enum RequestStatus { Unprocessed, Processed }

protected void Page_Load( object sender, EventArgs e ) {
}

protected void btnConfirm_OnClick( object sender, EventArgs e ) {
   pnlStatus.Visible = true;
   tmrStatus.Enabled = true;
}

protected void tmrStatus_Tick( object sender, EventArgs e ) {
   if (GetStatus() == RequestStatus.Processed) {
      litStatusText.Text = "SSID: " + GetSSID();
      tmrStatus.Enabled = false;
   }
}

private String GetSSID() {
   return "S-12345-1235-1235-1235";
}

private RequestStatus GetStatus() {
   return RequestStatus.Processed;
}

Теперь проблема, с которой я сталкиваюсь, заключается в том, что это не работает. Это работает, если я использую PostBackTriggers, а не Async. Однако это не та функциональность, которую я хотел бы. Я пытался поместить кнопку и таймер в UpdatePanel безрезультатно.

Есть идеи, что может быть не так с этим?

1 Ответ

2 голосов
/ 23 июля 2010

Эта проблема теперь решена. Все что мне нужно было сделать, это добавить Async = "true" в:

<%@ Page Language="C#" MasterPageFile="~/FlipitAdminPortal.Master" AutoEventWireup="true" CodeBehind="AppUpload.aspx.cs" Inherits="FlipitAdminPortal.AppUpload" Async="true" %>
...