显示服务器端警报消息,然后重定向到新页面

时间:2011-08-16 00:29:34

标签: c# asp.net response registerclientscriptblock

我的页面上有一个用户可以发送电子邮件的表单,

        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,然后警报才有效。我想显示警报然后重定向。

如何实现这一目标?我想过以某种方式使用计时器,但我不确定这是否是最佳解决方案。

感谢。

2 个答案:

答案 0 :(得分:6)

让JS进行重定向,而不是使用Response.Redirect。

例如。

alert('....'); window.location='home.aspx';

答案 1 :(得分:2)

原因是RegisterClientScriptBlock调用和重定向代码在同一页面生命周期内。这意味着在将页面呈现给客户端的浏览器之前调用Response.Redirect()。客户端无法查看警报消息。

解决方案是按照Will

的建议使用JS来重定向页面