2016-10-12 6 views
0

私の電子メールの連絡フォーム(何らかの不明な理由で)が2回、場合によっては3回送信されることはまれです。 、panelMailSentは感謝にリダイレクト。何らかの理由でVBの電子メールフォームを2回送信する

<% @Import Namespace="System.Web.Mail" %> 

<script language="vb" runat="server"> 

Sub btnSendFeedback_Click(sender as Object, e as EventArgs) 

Dim objMM as New MailMessage() 
objMM.To = "[email protected]" 
objMM.From = txtEmail.Text 
'objMM.Cc = "[email protected]" 
'objMM.Bcc = "[email protected]" 
objMM.BodyFormat = MailFormat.Text 
objMM.Priority = MailPriority.Normal 
objMM.Subject = "Scotts Holiday Village" 
objMM.Body = "Hello. At " + DateTime.Now + " an initial enquiry " & _ 
      "was made " & _ 
      "by a: " & txtTitle.Text & " " & txtFName.Text & " " & txtLName.Text & "." & vbCrLf & vbCrLf & _    
     ""& txtAdOne.Text & vbCrLf & _ 
      txtAdTwo.Text & vbCrLf & _ 
      txtAdThree.Text & vbCrLf & _ 
      ""& txtCity.Text & vbCrLf & _ 
      ""& txtPostCode.Text & vbCrLf & vbCrLf & _ 
      "Phone number: " & vbCrLf & txtPhone.Text & vbCrLf & vbCrLf & _ 
      "Email address: " & vbCrLf & txtEmail.Text & vbCrLf & vbCrLf & _ 
      "When are you looking to buy?: " & vbCrLf & txtWhenBuy.Text & vbCrLf & vbCrLf & _ 
      "Estimated budget: " & vbCrLf & txtEstBudget.Text & vbCrLf & vbCrLf & _ 
      "What's given you the idea of buying?: " & vbCrLf &txtIdea.Text & vbCrLf & vbCrLf & _ 
      "Message: " & vbCrLf &txtMsg.Text & vbCrLf 

    SmtpMail.SmtpServer = "smtp.1and1.com" 
    SmtpMail.Send(objMM) 
    panelSendEmail.Visible = false 
    panelMailSent.Visible = true 
End Sub 

</script> 

確認ページでは、私はわからないんだけど、それとは何かを持っている可能性があります:

は、ここに私のVBだ

<asp:panel id="panelMailSent" runat="server" Visible="False"> 

<% Response.Redirect("/thankyou/message-sent.aspx") %> 

</asp:panel> 

送信ボタン:

<asp:Button runat="server" ID="btnSendFeedback" Text="Send my form" 
       OnClick="btnSendFeedback_Click" /> 

フォームメソッド:

<form method="post" id="genericForm" action="default.aspx" name="installer" onsubmit="showHide(); return false;"> 

感謝します。

+0

常に2回送信しますか?誰かがボタンを何度も押していることがありますか? –

+0

こんにちは@ David_001 - それは可能ですが、うまくいけば彼らは確認ページに鮮明に行くでしょう。 2回目のラウンド(押した場合)を「無効にする」方法がありますか? –

+0

このメソッドにブレークポイントを設定し、両方の呼び出しでコールスタックをチェックします。 –

答えて

0

ページの下部に(送信ボタンがあります)、次のjavascriptが役立ちます。これにより、コントロールを無効にすることでダブルクリックが防止されます。

<script type="text/javascript" language="javascript"> 
    Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(DoubleClickHandler); 
    function DoubleClickHandler(sender, args) 
    { 
     var c = args.get_postBackElement(); 
     c.disabled = true; 
    } 
</script> 

他にも多くのアプローチがあります。サーバー側のチェックは安全ですが、asp.netで実装するのがより複雑です。別のアプローチでは、ダブル・サブミットを防止するのではなく、これらの電子メール・リクエストを(例えばDB内に)格納すると、タスクは5分ごとにすべての電子メールを送信し(例:)、その時点で重複を除去します。

+0

Works!多くのありがとう@ David_001 –

関連する問題