ASP.Net - Esc键停止我的'发送邮件'代码

本文关键字:代码 我的 Net Esc ASP | 更新日期: 2023-09-27 18:06:35

我有一个web表单,其中一个页面上有一个提交按钮。此提交按钮在尝试发送电子邮件时显示处理模式。如果邮件发送成功,页面将重定向,如果失败则显示错误消息。所有这些都很好,但我发现了一个问题,如果用户点击"Esc"键,没有发送电子邮件,它不属于我的catch。它似乎完全停止了我的电子邮件处理。

我如何确保如果用户单击Esc键(或可能和其他键),该过程仍在进行。我知道这有点太做作了。

    <div class="form-group">
        <div class="col-xs-12">
            <div class="pull-right">
                <asp:LinkButton ID="pg3button" runat="server" OnClick="pg3button_Click" CssClass="btn btn-primary" OnClientclick="ShowPopup();"><span aria-hidden="true" class="glyphicon glyphicon-ok"></span> Send & complete</asp:LinkButton>
            </div>
        </div>
    </div>
    <div class="modal fade" id="myModal" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" data-backdrop="static" data-keyboard="false">
        <div class="modal-dialog">
            <div class="modal-content">
                <div class="modal-header">
                    <h4 class="modal-title">
                        <asp:Label ID="lblModalTitle" runat="server" Text="">Processing</asp:Label>
                    </h4>
                </div>
                <div class="modal-body">
                    <asp:Label ID="lblModalBody" runat="server" Text="">
                        <p class="text-center">
                            <img src="../Content/Images/loading.gif" />
                        </p>
                    </asp:Label>
                </div>
            </div>
        </div>
    </div>
    <script>
        function ShowPopup()
        {
           $('#myModal').modal();
        }
    </script>

代码后面

protected void pg3button_Click(object sender, EventArgs e)
{            
    try
    {
        //Create the msg object to be sent
        MailMessage msg = new MailMessage();
        //Add your email address to the recipients
        msg.To.Add("test@test.co.uk");
        //Configure the address we are sending the mail from
        MailAddress address = new MailAddress("test@test.co.uk");
        msg.From = address;
        //Append their name in the beginning of the subject
        msg.Subject = "Enquiry";
        msg.Body = Label1.Text + " " + Session["pg1input"].ToString()
                    + Environment.NewLine.ToString() +
                    Label2.Text + " " + Session["pg1dd"].ToString()
                    + Environment.NewLine.ToString() +
                    Label3.Text + " " + Session["pg2"].ToString();
        //Configure an SmtpClient to send the mail.
        SmtpClient client = new SmtpClient("smtp.live.com", 587);
        client.EnableSsl = true; //only enable this if your provider requires it
        //Setup credentials to login to our sender email address ("UserName", "Password")
        NetworkCredential credentials = new NetworkCredential("test@test.co.uk", "Password10");
        client.Credentials = credentials;
        //Send the msg
        client.Send(msg);
        Response.Redirect("/Session/pg4.aspx");
    }
    catch
    {
        //If the message failed at some point, let the user know
        lblResult.Text = "<div class='"form-group'">" + "<div class='"col-xs-12'">" + "There was a problem sending your request. Please try again." + "</div>" + "</div>" + "<div class='"form-group'">" + "<div class='"col-xs-12'">" + "If the error persists, please contact us." + "</div>" + "</div>";
    }
}

ASP.Net - Esc键停止我的'发送邮件'代码

使用一些javascript IMO,像这样在你的页面顶部

<script type="text/javascript">
    document.querySelector("input").addEventListener("keyup",function(e){
    switch (e.keyCode) {
    case 116 : // 'F5'
         event.returnValue = false;
         event.keyCode = 0;
         break;  
    case 27: // 'Esc'
        event.returnValue = false;
        event.keyCode = 0;
        break;
    }
}
</script>

这是一个如何检查多个关键代码的示例。您可以使用相同的逻辑来检查任何类型的按键,并按照您认为合适的方式处理它们。

这里是一个键码列表,以防你需要它们

我发现对我有效的修复方法是将以下内容添加到页面顶部:

<script type="text/javascript">
    window.addEventListener('keydown', function (event)
    {
        // if the keyCode is 27 ( Esc )
        if (event.keyCode === 27)
        {
            event.preventDefault();
            return false;
        }
        // if the keyCode is 116 ( F5 )
        if (event.keyCode === 116) {
            event.preventDefault();
            return false;
        }
        // if the keyCode is 8 ( Backspace )
        if (event.keyCode === 8) {
            event.preventDefault();
            return false;
        }
    });
</script>