0

asp.net と C# を使用してフォームを使用してメールを送信しています。フォームの値は ID を使用して取得され、SmtpClient.send() を使用して送信されます。これはすべて正常に機能しています。

私が知りたいのは、ユーザーが焦ったり誤解したりしないように、送信をクリックすると実際に何かが起こっていることを示す方法です。

Web サイトは主に Microsoft Connect のページ ビューアーを介して表示されるため、タブに読み込み中のアイコンは表示されません。Chrome ではポインタが回転する円に変わりますが、IE を使用するとまったく表示されません。フォームが入っているdivの内容を読み込み中のgifに置き換えてみましたが、メールが送信された後(または送信に失敗した後)にのみ発生し、それが持続するので、新しいメールを送信したい場合はフォームの内容を再び置き換えるには、これを行うにはどうすればよいかを尋ねているのです。

4

4 に答える 4

0

新しいスレッドを開始して、メールを直接送信してください。待つ必要はありません。

于 2013-08-21T15:30:57.467 に答える
0

よし、整理したぞ。基本的に送信ボタンに追加OnClientClickし、フォームにイメージタグを追加することでjQueryを介して実行しました。ボタンがクリックされるたびにフォームが作成されるため (クリックされたボタンによって内容が異なるため)、メールの送信後に画像は存在しません。これは、電子メールが送信された後も存続するコード ビハインドにイメージ タグを追加する場合には当てはまりませんでした。

総括する:

<asp:button runat="server" text="Submit" onclick="code_behind_function" onclientclick="javascriptfunction()"/>
于 2013-08-21T15:59:34.480 に答える
-1

バックグラウンドでメールを送信するには、SMTPClient.SendAsync を使用します。メール送信からのコールバックが完了したときにキャプチャするイベント ハンドラーを作成し、スピナーを非表示にします。

例えば

// Code to show your spinning circle goes here
client.SendCompleted += new 
        SendCompletedEventHandler(SendCompletedCallback);
...


private static void SendCompletedCallback(object sender, AsyncCompletedEventArgs e)
    {
        // Code to hide your spinning circle goes here!
    }

これは、javascript を使用して画像を表示し、コード ビハインドで非表示にする実際の例です。非同期で送信する必要はありません。(エラーハンドリング省略)

sendmail.aspx ページ:

<body>
    <form id="form1" runat="server">
        <div>
            From: <asp:TextBox ID="txtFrom" runat="server"></asp:TextBox><br />
            To: <asp:TextBox ID="txtTo" runat="server"></asp:TextBox>
        </div>
        <div id="spinner_div">
            <asp:Image ID="imgSpinner" runat="server" ImageUrl="~/Images/ajax-loader.gif"></asp:Image>
        </div>
        <input type="button" onclick="document.getElementById('imgSpinner').style.display = ''; document.forms[0].submit();" value="Send Mail" />
    </form>
</body>

sendmail.aspx.cs

public partial class Sendmail : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        imgSpinner.Attributes.Add("style", "display:none");

        if (IsPostBack)
        {
            System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient();
            client.Send(new System.Net.Mail.MailMessage(txtFrom.Text, txtTo.Text));
        }
    }
}
于 2013-08-21T15:20:22.337 に答える