2010-11-09 2 views
1

Возможно ли задержать отклик.redirect на странице asp.net на 5 секунд?Задержка asp.net перед ответом перенаправление

что-то вроде delay.response.redirect ("myURL.aspx")

мне нужно запустить JQuery анимацию, прежде чем страница перенаправляет.

Я не хочу использовать meta refresh, если я могу помочь, но если это единственный способ или лучший способ, пожалуйста, дайте мне знать.

благодаря

ответ

2

Если вы отправили на сервер, больше не сможете повлиять на клиента - все, что может сделать сервер, - это подождать. И спать на веб-сервере очень плохо - исчерпывает пул потоков, плохо для производительности.

Что вы должны сделать - это задержка на клиенте. Кроме того, вы можете опубликовать эту страницу с помощью AJAX - это тот, который я бы предпочел. Отправьте на сервер с помощью ajax, затем получите ответ и подождите 5 секунд (в javascript) перед сменой location.href Вы даже можете прочитать новое местоположение с сервера (из данных, возвращаемых вызовом ajax)

2

Просто, прежде чем делать Response.Redirect, добавьте строку для System.Threading.Thread.Sleep (5000);

+0

OK. так что работает, но то, что мне действительно нужно сделать, это запустить анимацию javascript, прежде чем перенаправить, так что на самом деле не получится, чего я хочу. – Tom

+0

http://www.w3schools.com/js/js_timing.asp –

0

Я создал Гиперссылка на клиенте и контроль NavigateURL этого с сервера. Затем я ждать, пока при загрузке страницы на клиенте, извлечь URL из этого и использовать JavaScript для инициирования редирект после определенного периода времени (вы можете подождать, пока ваша анимация не закончил):

Client

<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"; 

Вы можете жестко закодировать URL перенаправления в JavaScript, но мне нужно, чтобы иметь возможность контролировать это с сервера.

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

Можно ли задержать response.redirect на странице ASP.NET на 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>") 
%> 
1
Response.AddHeader("REFRESH", "5;URL=http://redirectPage.aspx") 

5 = задержка в секундах.

0

Для решения, не зависящего от клиента, то есть того, который полагается на браузер для реализации задержки, вы можете создать прокси-страницу, которая содержит задержку на стороне сервера и затем перенаправляется на конечную страницу назначения.

myPostPage.aspx обрабатывает данные затем вызывает response.redirect("myProxyPage.aspx?d=myDestinationPage.aspx", false)

Тогда myProxyPage.aspx может иметь таймер, System.threading.Thread.Sleep("5000"), а затем перенаправить на целевую страницу: response.redirect(request.querystring("d"), false)

Это должно дать первую страницу достаточно времени, чтобы завершить до последней страницы называется.

 Смежные вопросы

  • Нет связанных вопросов^_^