Response.Redirect - отправляет сообщения самому себе перед перенаправлением? - PullRequest
2 голосов
/ 10 февраля 2010

Создает ли Response.Redirect первый PostBack на странице, которая вызывает перенаправление, перед фактическим перенаправлением? Я так не думаю, но моя отладка показывает, что это так.

Я вижу, как это происходит, и это вызывает у меня проблему. Проблема заключается в следующем:

  1. На моей странице есть кнопка asp.net.
  2. Когда кнопка нажата, страница отправляется обратно, конечно. Затем в методе обработчика событий для этой кнопки вызывается следующее:

    Response.Redirect("Checkout?frpp=1"), true);
    
  3. Но я заметил, что когда вызывается перенаправление, он сначала возвращается назад и попадает на страницу загрузки для этой страницы, страницы, которая выполняет перенаправление. Ну, это вызывает у меня проблемы, потому что это вызывающий код, который я не хочу, чтобы он снова вызывал, например:

    if (! IsPostBackl) ShowOrderItems ();

Итак, я делаю второй постбэк:

  1. Первый PostBack происходит, когда вы нажимаете кнопку, нажимаете на обработчик событий, запускаете метод моего обработчика, который вызывает Redirect.
  2. Redirect вызывается, но он делает еще один PostBack на той же странице здесь ... почему? Это возможно?

Ответы [ 2 ]

3 голосов
/ 10 февраля 2010

Response.Redirect не вызывает PostBack - он выдает HTTP 302 response, в результате чего браузер отправляет запрос на новый URL.

Response.Redirect завершает текущую функцию и вызывает стек, в котором она находится, - она ​​не прерывает текущий поток автоматически. Возможно, это то, что вы видите?

2 голосов
/ 10 февраля 2010

Так работают кнопки ASP.Net. Они отправляют обратно страницу. Когда это происходит, сначала запускается событие загрузки страницы (ну, собственно, некоторые вещи внутреннего фреймворка, затем инициализация страницы, а затем загрузка страницы). После этого ваш обработчик нажатия кнопки будет запущен.

Мне кажется, вы ответили на свой вопрос - "if (!IsPostBack)" - это то, что нужно использовать, чтобы пропустить запуск кода загрузки страницы в сообщении.

...