【问题标题】:How to redirect to another page after a delay延迟后如何重定向到另一个页面
【发布时间】:2015-07-26 15:16:37
【问题描述】:

我的网页中有一个登录框,位于 UpdatePanel

<asp:UpdatePanel runat="server" ClientIDMode="Static" ID="upSign" UpdateMode="Conditional">
    <ContentTemplate>
        <div class="dvHolder hidOverflow clearfix">
            <input id="txtSUser" type="text" name="SUsername" value="" placeholder="Username" runat="server" />
        </div>
        <div class="dvHolder hidOverflow clearfix">
            <input id="txtSPass" type="password" name="SPassword" value="" placeholder="Password" runat="server" />
        </div>
        <div class="dvHolder hidOverflow clearfix setTextRight">
            <asp:Button ID="btnSignIn" ClientIDMode="Static" runat="server" Text="Sign In" OnClick="btnSignIn_Click" />
            <asp:Label runat="server" Text="" ID="lblSSuccess" ClientIDMode="Static" CssClass="lblMsgSuccess" />
        </div>
    </ContentTemplate>
</asp:UpdatePanel>

成功验证用户后,我想显示一条消息并在延迟(比如说 5 秒)后重定向。我有以下代码,但它没有重定向:

public void btnSignIn_Click(object sender, EventArgs e)
{
    lblSSuccess.Text = "We found you, now redirecting...";
    lblSSuccess.ForeColor = ColorTranslator.FromHtml("#037203");
    Session["UseIsAuthenticated"] = "true";

    Response.AppendHeader("Refresh", "5;url=homepage.aspx");
}

消息已更新,但页面由于某种原因未重定向。

请帮我解决问题。

【问题讨论】:

标签: c# asp.net


【解决方案1】:

首先创建一个函数来执行您需要的操作(例如重定向到页面)

第二次将计时器添加到您的标记中,并将时间间隔设置为 5000(5 秒)并将计时器标记为 enabled=false,以便在页面加载后计时器不会启动

成功验证用户后,显示您想要的消息,然后启用计时器

【讨论】:

    【解决方案2】:

    你可以写一段Javascript有延迟,然后用这段代码重定向到页面

    public void btnSignIn_Click(object sender, EventArgs e)
    {
        lblSSuccess.Text = "We found you, now redirecting...";
        lblSSuccess.ForeColor = ColorTranslator.FromHtml("#037203");
        Session["UseIsAuthenticated"] = "true";
    
        ScriptManager.RegisterClientScriptBlock(this, typeof(Page), "redirectJS",
        "setTimeout(function() { window.location.replace('homepage.aspx') }, 5000);", true);
    }
    

    【讨论】:

      【解决方案3】:

      有很多方法可以做到这一点,但我喜欢使用这段代码,因为它在许多不同的情况下都能很好地工作。这是有 5 秒的延迟。

      HtmlMeta oScript = new HtmlMeta();
      oScript.Attributes.Add("http-equiv", "REFRESH");
      oScript.Attributes.Add("content", "5; url='http://www.myurl.com/'");
      Page.Header.Controls.Add(oScript);
      

      【讨论】:

        【解决方案4】:
        Response.AppendHeader("Refresh", "2;url=page.aspx");
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-06-08
          • 1970-01-01
          • 1970-01-01
          • 2017-03-04
          • 1970-01-01
          • 1970-01-01
          • 2011-08-22
          相关资源
          最近更新 更多