asp.net задержка перед перенаправлением ответа - PullRequest
2 голосов
/ 09 ноября 2010

Можно ли задержать response.redirect на странице asp.net на 5 секунд?

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

Мне нужнозапустить анимацию jquery до перенаправления страницы.

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

спасибо

Ответы [ 7 ]

4 голосов
/ 04 июня 2013
ScriptManager.RegisterStartupScript(this.UpdatePanel1, this.GetType(), "click", "alert('Cliente cadastrado com sucesso.'); setTimeout(function(){window.location.href ='../../Default.aspx'}, 3000);", true);
2 голосов
/ 24 апреля 2015
Response.AddHeader("REFRESH", "5;URL=http://redirectPage.aspx")

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

2 голосов
/ 09 ноября 2010

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

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

2 голосов
/ 09 ноября 2010

Непосредственно перед выполнением Response.Redirect добавьте строку для System.Threading.Thread.Sleep (5000);

0 голосов
/ 22 марта 2017

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

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

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

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

0 голосов
/ 22 ноября 2013

Можно ли задержать 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>")
%>
0 голосов
/ 19 февраля 2013

Я создал гиперссылку на клиенте и управляю ее 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";

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

...