【问题标题】:Time delay before redirect重定向前的时间延迟
【发布时间】:2012-04-13 13:12:53
【问题描述】:

我为我的 Web 应用程序创建了一个注册页面。应用程序要求用户注册成功后,页面会显示“注册成功”的信息,然后等待5秒再切换到登录页面。我用Thread.Sleep(5000)。它等待 5 秒,但不显示消息。谁能帮帮我?

void AccountServiceRegisterCompleted(object sender, RegisterCompletedEventArgs e)
    {
        if (e.Result)
        {
            lblMessage.Text = "Register successfully";

            Thread.Sleep(5000); 
            this.SwitchPage(new Login());
        }
        else
        {
            ...
        }
    }

【问题讨论】:

  • ASP .NET WebForms? MVC?其他?请适当标记,因为它会影响您将收到的答案。
  • 为什么不立即重定向到注册页面,并带有“注册成功”的标志;使用 ?register=true 的 GET 参数重定向或显示标志的东西就足够了。这也更加用户友好。

标签: c# timedelay


【解决方案1】:

Thread.Sleep(5000) 仅将您的线程挂起 5 秒 - 在此期间不会执行此线程上的任何代码。所以没有消息或其他任何东西。

如果是 ASP.NET 应用程序,客户端不知道服务器上发生了什么,并等待服务器响应 5 秒。您必须手动实现此逻辑。例如,使用 JavaScript:

setTimeout(function(){location.href = 'test.aspx';}, 5000);

或通过添加 HTTP 标头:

Response.AddHeader("REFRESH","5;URL=test.aspx");

meta标签:

<meta http-equiv="refresh" content="5; url=test.aspx" />

more info

如果它是桌面应用程序,您可以使用 timers 之类的东西。并且永远不要让主线程(UI Thread)挂起像 Thread.Sleep 这样的东西。

【讨论】:

  • 谢谢Lorond,说明非常清楚易懂。我会尝试使用这些建议。
  • 如果它是一个登录表单并且它在更新面板中怎么办?我尝试了上述方法,但它没有重定向我:/
【解决方案2】:

只有元标记就足以重定向到另一个页面

动态广告元标记

Response.AddHeader("REFRESH", "5;URL=~/account/login");

此代码将向当前页面添加一个元标记,并且您的页面将在指定时间重定向到另一个页面,如上。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-15
    • 2013-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-29
    • 1970-01-01
    相关资源
    最近更新 更多