使用C#显示消息后重定向页面

时间:2015-02-07 17:54:46

标签: c# asp.net

我只是首先尝试显示消息,然后将用户重定向到另一个页面。我遇到的问题是它没有首先显示消息,但它正在重定向页面。 这是我的代码

if (some condition == true)
{
    string message = string.Empty;
    message = "Success.  Please check your email.  Thanks.";
    ClientScript.RegisterStartupScript(GetType(), "alert", "alert('" + message + "');", true);

    Response.Redirect("Login.aspx");    
}

4 个答案:

答案 0 :(得分:3)

实现结果的最佳方法是使用Javascript(客户端)异步执行。

如果你想在服务器端做,这是一个例子:

protected void btnRedirect_Click(object sender, EventArgs e)
{
    string message = "You will now be redirected to YOUR Page.";
    string url = "http://www.yourpage.com/";
    string script = "window.onload = function(){ alert('";
    script += message;
    script += "');";
    script += "window.location = '";
    script += url;
    script += "'; }";
    ClientScript.RegisterStartupScript(this.GetType(), "Redirect", script, true);
}

答案 1 :(得分:0)

这是因为您的代码从服务器端重定向,甚至在该脚本到达客户端浏览器之前。您应该删除该重定向并修改您的javascript,以便在显示该消息后在客户端完成重定向。

编辑:你一定要查看ASP.NET page life cycle

答案 2 :(得分:0)

这里的问题是你做了两件事:

  1. 将脚本添加到发送到显示JavaScript警报的浏览器的输出中。
  2. 使用Response.Redirect触发HTTP 302 redirect
  3. 后者(2)意味着(1)实际上没有做任何事情。要在此处实现所需,您可以使用RegisterStartupScript发送脚本,如:

    alert('Message');
    window.location.href = 'login.aspx';
    

    所以你删除 Response.Redirect行并使用:

    ClientScript.RegisterStartupScript(GetType(), "alert", "alert('" + message + "'); window.location.href = 'login.aspx'", true);
    

答案 3 :(得分:0)

您可以在C#中使用Timer。只需给用户足够的时间阅读邮件,然后将用户重定向到所需的页面。

这个帖子在使用计时器方面有一个很好的例子:how to use Timer in C#