如何在页面重定向后发布消息以确认已发送的消息(C#/ASP.Net)

本文关键字:消息 确认 ASP Net 重定向 布消息 | 更新日期: 2023-09-27 18:20:52

嗨,我刚刚在我的网站上设置了一个从"联系我们"页面发送电子邮件的方法,我想在他们发送电子邮件后清除所有电子邮件详细信息的asp.net表单,所以我使用了response.redirect来刷新页面。我想显示一条消息或弹出窗口来显示消息已经发送,但由于页面正在刷新,我试图写这封信的标签永远不会被调用。有没有办法绕过这个问题,或者有没有办法在不重定向的情况下清除表单?这是我正在使用的代码:

protected void SubmitBtn_Click(object sender,EventArgs e)
{
    MailMessage mailObj = new MailMessage(
       EmailTxt.Text, "xxxxx@xxxxx.com", SubjectTxt.Text, MessageTxt.Text);
    SmtpClient SMTPServer = new SmtpClient("localhost");
    try
    {
        SMTPServer.Send(mailObj);
        Response.Redirect("ContactMe.aspx");
        base.OnLoad(e);
        MessageLbl.Text = "Email Sent SucessFully.";
    }
    catch (Exception ex)
    {
        MessageLbl.Text = ex.ToString();
    }
}

非常感谢提前

如何在页面重定向后发布消息以确认已发送的消息(C#/ASP.Net)

Response.Redirect是您的问题。您有效地刷新了页面,之后的任何代码都无关紧要。为什么不通过clode(即myTextBox.Text = string.Empty等)清除表单,然后设置消息文本?

try
{
    SMTPServer.Send(mailObj);
    // Clear email form
    Control1.Text = string.Empty;
    Control2.Text = string.Empty;
    // etc...
    MessageLbl.Text = "Email Sent SucessFully.";
}
catch (Exception ex)
{
    MessageLbl.Text = ex.ToString();
}

如果你不想让你的用户留在电子邮件页面上(假设你想在他们发送电子邮件后把他们带到其他地方),你可以使用:

Response.AddHeader("REFRESH","3;URL=yourURL.aspx"); 

代替

Response.redirect. 

你的标签会弹出消息,几秒钟后重定向就会发生。