2012-03-15 2 views
0

В моем приложении у меня есть кнопка для сохранения некоторой информации. Тем не менее, я хотел бы иметь задержку в коде до того, как последняя строка будет выполнена, чтобы пользователь мог прочитать сообщение, которое появляется до того, как он будет перенаправлен на новую страницу.Задержка в событии в коде за файлом

Я знаю, что делать это не совсем оптимально, но по каким-то причинам (например, времени) я хочу сделать это в любом случае.

Возможно ли это, и если да, то как я мог это сделать?

Заранее благодарен!

protected void SaveButton_Click(object sender, EventArgs e) { 
    // Lots of code not relevant for the problem here 

    Service service = new Service(); 
    service.SaveMovie(movie); 

    successMessage.Visible = true; 
    happyMessage.Text = "The movie was successfully added, now add some genres!"; 

    // Here I want a delay of 2 seconds before the next line is executed... 

    Response.Redirect(String.Format("~/Edit.aspx?id={0}", movie.MovieID), false); 
} 
+5

Они выиграли Никогда не просматривайте текст сообщения. Перед перенаправлением ответа будет только 2-секундная задержка. –

+0

Здесь вам понадобится JavaScript (jQuery). –

+0

Да, но я могу изменить его на 5 или 10 секунд. Вопрос в том, можно ли и как это сделать. – holyredbeard

ответ

1

Необходимо сделать это на стороне клиента. Один из вариантов заключается в следующем:

Определение Javascript функции на странице под названием redirect, как так:

function redirect(url) 
{ 
    setTimeout(function(){window.location.href=url;} ,2000); 
} 


protected void SaveButton_Click(object sender, EventArgs e) 
{ 

    // Lots of code not relevant for the problem here 
    Service service = new Service(); 
    service.SaveMovie(movie); 
    successMessage.Visible = true; 
    happyMessage.Text = "The movie was successfully added, now add some genres!"; 

    // Here I want a delay of 2 seconds before the next line is executed... 
    ClientScript.RegisterStartupScript(this.GetType(),"somekey","redirect('"+String.Format("~/Edit.aspx?id={0}", movie.MovieID)+"');"); 

} 
+0

Спасибо большое за ответ. Однако при реализации кода я получаю следующее сообщение об ошибке: «Ошибка 1 Ссылка на объект требуется для нестатического поля, метода или свойства» System.Web.UI.ClientScriptManager.RegisterStartupScript (System.Type, string, string)». Вы знаете, как его решить? – holyredbeard

+0

@JasonCraig Я обновил свой ответ. Попробуйте 'ClientScript.RegisterStartupScript (...)'. – Icarus

+0

Okey, спасибо. Дело в том, что теперь я получил следующее сообщение об ошибке: «Имя« ClientScript »не существует в текущем контексте». :/ – holyredbeard

0

Это будет легко, если вы используете Javascript. Использование JavaScript повысит производительность

Button_Click 
{  

string js ="<script type='text/javascript'>setTimeout(function()window.location.href="+String.Format("~/Edit.aspx?id={0}", movie.MovieID)+";} ,2000);</script>"  

ScriptManager.RegisterStartupScript (Me.Page, GetType (страница), "JS", JS, Ложные)

} 

возможно дубликат asp.net delay before response redirect

+0

Спасибо большое! Тем не менее, я получаю ошибку компиляции в ClientScriptManager ... "Ошибка Ссылка на объект требуется для нестатического поля, метода или свойства 'System.Web.UI.ClientScriptManager.RegisterStartupScript (System.Type, string, string)». Вы знаете, как его решить? – holyredbeard

+0

:) .. Просто попробуйте, если он будет работать как ответ :) – kbvishnu

+1

Это неправильно. Вы не можете вызвать System.Threading.Thread.Sleep (5000), чтобы достичь того, чего хочет пользователь. Это блокирует ответ в течение 5 секунд, а затем выплевывает весь HTML. – Icarus

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