【问题标题】:asp.net delay before response redirect响应重定向之前的asp.net延迟
【发布时间】:2010-11-09 17:08:15
【问题描述】:

是否可以将asp.net页面中的response.redirect延迟5秒?

类似 delay.response.redirect("myURL.aspx")

我需要在页面重定向之前运行一个 jquery 动画。

如果我能提供帮助,我不想使用元刷新,但如果这是唯一的方法或最好的方法,请告诉我。

谢谢

【问题讨论】:

    标签: asp.net response.redirect


    【解决方案1】:
    ScriptManager.RegisterStartupScript(this.UpdatePanel1, this.GetType(), "click", "alert('Cliente cadastrado com sucesso.'); setTimeout(function(){window.location.href ='../../Default.aspx'}, 3000);", true);
    

    【讨论】:

      【解决方案2】:
      Response.AddHeader("REFRESH", "5;URL=http://redirectPage.aspx")
      

      5 = 延迟秒数。

      【讨论】:

      • 您可以在之后发布您的消息/图像/其他任何内容,以便第二次显示。我喜欢这样,我告诉他们更新他们的书签..
      【解决方案3】:

      如果您发布到服务器,则无法再影响客户端 - 服务器所能做的就是等待。并且在 Web 服务器中休眠非常糟糕 - 耗尽线程池,对性能不利。

      您应该做的是延迟客户端。或者,您可以使用 AJAX 发布到该页面 - 这是我更喜欢的一个。使用 ajax 发布到服务器,然后获取响应并等待 5 秒(在 javascript 中),然后再更改 location.href 您甚至可以从服务器读取新位置(从 ajax 调用返回的数据中)

      【讨论】:

        【解决方案4】:

        就在执行 Response.Redirect 之前,添加 System.Threading.Thread.Sleep(5000); 的行

        【讨论】:

        • 好的。这样就可以了,但是我真正需要做的是在重定向之前运行一个javascript动画,所以实际上并不能实现我想要的效果。
        【解决方案5】:

        我在客户端创建了一个超链接,并从服务器控制它的 NavigateURL。然后我等到客户端上的页面加载,从中提取 url 并在一段时间后使用 javascript 启动重定向(您可以等到动画完成):

        客户

        <asp:Content ID="Head" ContentPlaceHolderID="ContentHead" runat="server">
            <script type="text/javascript">
                $(document).ready(function () {
                    redirectUrl = $('#mainbody').find('a').attr('href');
                    setTimeout(function(){
                        window.location.replace(redirectUrl);
                    }, 5000);
                });
            </script>
        </asp:Content>
        
        <asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
            <div id="mainbody">
                <asp:HyperLink ID="redirectUrl" runat="server" Visible="false" />
            </div>
        </asp:Content>
        

        服务器

        redirectUrl.NavigateUrl = "ValentinesDay.aspx";
        

        您可以在 javascript 中对重定向 URL 进行硬编码,但我需要能够从服务器控制它。

        【讨论】:

          【解决方案6】:

          是否可以将asp.net页面中的response.redirect延迟5 秒?

          类似 delay.response.redirect("myURL.aspx")

          <%
          response.write("<body onload=""myFunction()""><script>function myFunction()_
          {setTimeout(function newDoc()_
          {window.location.assign(""http://www.stackoverflow.com"")},5000);}_
          </script>")
          %>
          

          【讨论】:

            【解决方案7】:

            对于非客户端解决方案,即依赖浏览器实现延迟的解决方案,您可以创建一个包含服务器端延迟的代理页面,然后重定向到最终目标页面。

            myPostPage.aspx 处理数据然后调用response.redirect("myProxyPage.aspx?d=myDestinationPage.aspx", false)

            那么myProxyPage.aspx可以有一个定时器,System.threading.Thread.Sleep("5000"),然后重定向到目标页面:response.redirect(request.querystring("d"), false)

            这应该让您的第一页有足够的时间在最后一页被调用之前完成。

            【讨论】:

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