Обновляя это с моим решением, я собрал воедино в основном из первого ответа выше.
Мне нужно загрузить страницу, а затем начать загрузку содержимого для панели обновлений.Панель вызывает некоторые веб-сервисы, и мы не хотим, чтобы вся страница зависала в случае, если удаленный сервер не отвечает.Мы также не хотим ждать.
Мой HTML:
<asp:UpdatePanel ID="udpCheckout" runat="server" UpdateMode="Always">
<ContentTemplate>
<asp:Image ID="imgSpinner" runat="server" Visible="true" ImageUrl="~/images/ajax-loader.gif" />
<br />
<asp:Label ID="lblWait" runat="server" Visible="true" Text="Please wait..."></asp:Label>
<asp:Button ID="hiddenAsyncTrigger" runat="server" Text="AsyncUpdate" style="display:none;" />
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="hiddenAsyncTrigger" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
Мой код за фрагментами:
В page_load:
ScriptManager.RegisterStartupScript(Me.Page, Me.Page.GetType, "LoadUpdate", GetPostBackEventReference(hiddenAsyncTrigger, String.Empty), True)
И обработчик кнопки:
Sub LoadUpdatePanels(ByVal o As Object, ByVal e As EventArgs) Handles hiddenAsyncTrigger.Click
System.Threading.Thread.Sleep(5000) 'wait 5 seconds so I can see the page change
imgSpinner.Visible = False
lblWait.Text = "Content is now loaded."
'udpCheckout.Update()
End Sub
Это был мой тест, чтобы увидеть, смогу ли я заставить его работать.Теперь, чтобы заменить все это реальным кодом!