asp.net在响应重定向之前延迟

时间:2010-11-09 17:08:15

标签: asp.net response.redirect

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

类似delay.response.redirect(“myURL.aspx”)

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

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

感谢

7 个答案:

答案 0 :(得分:4)

ScriptManager.RegisterStartupScript(this.UpdatePanel1, this.GetType(), "click", "alert('Cliente cadastrado com sucesso.'); setTimeout(function(){window.location.href ='../../Default.aspx'}, 3000);", true);

答案 1 :(得分:2)

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

答案 2 :(得分:2)

如果您发布到服务器,则无法再影响客户端 - 所有服务器都可以做的就是等待。在网络服务器上睡觉非常糟糕 - 耗尽线程池,对性能不利。

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

答案 3 :(得分:2)

Response.AddHeader("REFRESH", "5;URL=http://redirectPage.aspx")

5 =以秒为单位的延迟。

答案 4 :(得分:0)

我在客户端上创建了一个Hyperlink,并从服务器控制了它的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中对重定向网址进行硬编码,但我需要能够从服务器对其进行控制。

答案 5 :(得分:0)

  

是否可以将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>")
%>

答案 6 :(得分:0)

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

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

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

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