Как опубликовать сообщение для подтверждения отправленного сообщения после перенаправления страницы (C#/ASP.Net)
Привет! Я только что настроил метод на своем веб-сайте для отправки электронного письма со страницы "Контакты". Я хотел очистить форму asp.net от всех подробностей, когда они отправили электронное письмо, поэтому я использовал ответ.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();
}
}
Спасибо заранее
2 ответа
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.
На вашем ярлыке появится сообщение, и через несколько секунд произойдет перенаправление.