Отображение предупреждающего сообщения на стороне сервера, а затем перенаправление на новую страницу - PullRequest
2 голосов
/ 16 августа 2011

У меня есть форма на моей странице, где пользователи могут отправить электронное письмо,

        try
        {
            smtpClient.Send(message);

            Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "Key", 
                "alert('Thank you for your submission.');", true);
        }
        catch(Exception)
        {
            Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "Key", 
                "alert('There was an error processing your request.');", true);
        }

        Response.Redirect("home.aspx");

Предупреждение не появляется, и страница просто перенаправляется немедленно, если я не закомментирую Response.Redirect, тогда предупреждение работает,Я хочу отобразить предупреждение, а затем перенаправить.

Как этого достичь?Я думал об использовании таймера, но я не уверен, что это лучшее решение.

Спасибо.

Ответы [ 2 ]

6 голосов
/ 16 августа 2011

Пусть JS выполняет перенаправление вместо использования Response.Redirect.

например.

alert('....'); window.location='home.aspx';
2 голосов
/ 16 августа 2011

Причина в том, что вызов RegisterClientScriptBlock и код перенаправления находятся в одном и том же жизненном цикле страницы. Это означает, что Response.Redirect () вызывается до отображения страницы в браузере клиента. У клиента нет возможности увидеть предупреждающее сообщение.

Решение состоит в том, чтобы использовать JS для перенаправления страницы в соответствии с предложением Will

...