Странно ASP.NET Проблема с перенаправлением / отправкой

#javascript #asp.net #redirect #dopostback

#javascript #asp.net #перенаправление #допостбэк

Вопрос:

У меня есть код в блоке try / catch с перенаправлением на другую страницу. Если возникает какая-либо ошибка, catch также перенаправляет на другую страницу. Когда пользователь нажимает на кнопку отправки, страница никуда не перенаправляется. Он выполняет какое-то обновление страницы и остается на той же странице. Иногда это случается. В других случаях кнопку нужно нажать несколько раз, прежде чем перенаправление будет распознано, а затем оно перенаправит на страницу УСПЕХА. Есть мысли о том, почему это происходит? Спасибо.

 try
{
    ...
    Response.Redirect("SOME PAGE SUCCESS", false);
}
catch (Exception ex)
{
    Response.Redirect("SOME PAGE FAIL");
}
 

Js-скрипт выполняет doPostBack для отправки данных на сторону сервера.

 setTimeout('__doPostBack(''   el.name   '',''   args   lia   '')', 500);
 

Комментарии:

1. Где находится этот код? В Page_Load? Обработчик события нажатия кнопки?

2. Код находится в обработчике события нажатия кнопки. Сначала он выполняет jquery для получения данных, а затем отправляет их в функцию btnSubmit_click, которая затем вызывает другую функцию, чтобы определить, выполняется ли код успешно или сбой.

Ответ №1:

Вы не должны использовать response.redirect внутри блока try-catch. Попробуйте установить логическую переменную в блоке try-catch, затем используйте значение этой переменной в операторе if-then-else для перенаправления на соответствующую страницу после завершения попытки.

Комментарии:

1. Код уже был написан таким образом, когда я работал над этим, но в любом случае, я не думаю, что это проблема. Я избавился от всех блоков try / catch в коде, и странная проблема с отправкой по-прежнему возникает, когда он иногда отправляет данные или не отправляет данные.

Ответ №2:

Мне пришлось переделать всю страницу. По-видимому, было слишком много вызовов setTimeout(‘__doPostBack()’, 500); в javascript, который обновляет страницу случайным образом и не позволяет серверу завершить выполнение своего кода. Избавился от всех вызовов __doPostBack на сервер и использовал asp.net контролирует и работает непосредственно с сервером для отправки страниц.