我的页面上有一个用户可以发送电子邮件的表单,
try
{
smtpClient.Send(message);
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "Key",
"alert('Thank you for your submission.');", true);
}
catch(Exception)
{
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "Key",
"alert('There was an error processing your request.');", true);
}
Response.Redirect("home.aspx");
警报没有出现,页面只是立即重定向,除非我注释掉Response.Redirect,然后警报才有效。我想显示警报然后重定向。
如何实现这一目标?我想过以某种方式使用计时器,但我不确定这是否是最佳解决方案。
感谢。
答案 0 :(得分:6)
让JS进行重定向,而不是使用Response.Redirect。
例如。
alert('....'); window.location='home.aspx';
答案 1 :(得分:2)
原因是RegisterClientScriptBlock调用和重定向代码在同一页面生命周期内。这意味着在将页面呈现给客户端的浏览器之前调用Response.Redirect()。客户端无法查看警报消息。
解决方案是按照Will
的建议使用JS来重定向页面