Używam metody SmtpClient "s Send w ASP.NET, aby wysłać wiadomość e-mail z strony kontaktowej. Podczas gdy wiadomość jest wysyłana, chcę pokazać obraz ładujący. Dokładniej, gdy użytkownik naciska przycisk Wyślij, aby wysłać wiadomość e-mail, pojawi się obraz ładowania, a po wysłaniu wiadomości, obraz ładowania zniknie. Wiem, że mogę użyć onclick metody, aby wyświetlić obraz ładowania. Ale jak mogę usunąć ten obraz, gdy wiadomość zostanie wysłana?

0
Hello World 14 sierpień 2012, 22:30

3 odpowiedzi

Najlepsza odpowiedź

Envapulec swój przycisk w panelu aktualizacji.

Możesz użyć szablonu UpdateProgress, aby wyświetlić następnie znak ładowania.

<asp:updatepanel id="MailUpdatePanel" runat="server">    
<contenttemplate>


<asp:updateprogress id="UpdateProgress1" runat="server" associatedupdatepanelid="MailUpdatePanel" dynamiclayout="true">
      <progresstemplate>
            <img src="images/loading.gif">
        </progresstemplate>
 </asp:updateprogress>
<asp:Button ID="SendMail" runat="server" OnClick="SendMail_Click" Text="Mail" />
</contenttemplate>
</asp:updatepanel>

Jeśli jesteś nowy, aby zaktualizować panele, spójrz na to Wprowadzenie do paneli aktualizacji .

3
nunespascal 14 sierpień 2012, 18:45

Przywołuję się twoją metodą / działaniem przez AJAX, a następnie na wywołaniu zwrotnym success ukryj obciążenie div.

Możesz także dodać program obsługi błędów do połączenia AJAX, tak że jeśli wiadomość nie może zostać wysłana, tekst ładowania nie pozostanie tam.

1
Phillip Schmidt 14 sierpień 2012, 18:32

Najlepszym sposobem na to, jeśli używasz AJAX, jest wywołanie obrazu ładującego, gdy użytkownik kliknie przycisk, i usunąć go, gdy transakcja zostanie wykonana.
Oto przykład przy użyciu jQuery AJAX:

HTML:

<input type='submit' ... onlick='$("#loading").fadeIn();'>

JS:

 $.post($('FORM').attr('action'),
        {{args you wanna pass}},
        function (data) {
            process_callback_data(data);
            $("#loading").fadeOut();
        });
0
SpiXel 14 sierpień 2012, 18:41