我只是首先尝试显示消息,然后将用户重定向到另一个页面。我遇到的问题是它没有首先显示消息,但它正在重定向页面。 这是我的代码
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");
}
答案 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)
这里的问题是你做了两件事:
Response.Redirect
触发HTTP 302 redirect。后者(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#