Событие нажатия кнопки ASP.Net не срабатывает

Возможно, это связано с этим вопросом, но у меня немного больше информации.

Недавно я обновил приложение ASP.Net до .NET 3.5 после написания нескольких новых фрагментов с помощью Linq. Теперь мои страницы периодически перестают запускать обработчики событий. Я сузил его до страниц с Ajax на них, и я предполагаю, что это либо регистрация ScriptManager, либо регистрация AjaxControlToolkit, которая ускоряет проблему.

Действительно странная часть заключается в том, что страницы, кажется, работают нормально примерно в 2/3 случаев, а элементы управления теряют свои обработчики событий только в 1/3 случаев. Я задавался вопросом о возникновении какой-либо ошибки и неправильном отображении страницы, но я не могу найти доказательств этого.


person nathaniel    schedule 24.04.2009    source источник
comment
Вы работаете с панелями обновления на этих страницах AJAX?   -  person RSolberg    schedule 24.04.2009
comment
Некоторые из них да, но не все.   -  person nathaniel    schedule 24.04.2009


Ответы (7)


У нас была именно эта проблема, и, как вы сказали, это происходило только время от времени и только на страницах с запросами Ajax. Мы обнаружили, что отключение HTTP Keep-Alive, как предложено в ответе на Почему Internet Explorer не отправляет тело сообщения HTTP при вызове Ajax после сбоя? сработало.

Это можно сделать в IIS7, следуя инструкциям в Как настроить HTTP KEEP-ALIVE в IIS 7

person bstoney    schedule 17.08.2011

До сих пор я использовал только элементы управления Telerik Ajax, и мое наблюдение заключается в том, что если в элементе управления с поддержкой Ajax возникает исключение, ничего не происходит. Нет отчета об исключении, нет действий. ничего такого.

Возможно, вам следует протестировать свое приложение без ajax, чтобы выявить проблемные места.

person Midhat    schedule 24.04.2009
comment
Никаких ошибок - если я удалю части AJAX, все будет работать правильно. И, как я уже упоминал, примерно в 66% случаев он работает должным образом КАК ЕСТЬ, с библиотеками Ajax, которые все еще находятся в разметке. - person nathaniel; 24.04.2009

Моя первоначальная мысль заключалась в том, что что-то происходит, когда javascript выдает ошибку (не пойманный) и прерывает асинхронную обратную передачу.

Если вы можете заставить это происходить в среде разработки, вы можете попробовать обработку ошибок в окне . onerror и выдает несколько окон предупреждений. Это может помочь увидеть, где возникают возможные ошибки.

person hacker    schedule 24.04.2009

ты пытался:

ScriptManager.GetCurrent(this).RegisterAsyncPostBackControl(yourButton);

person Iralda Mitro    schedule 30.04.2009

Мне кажется, у вас проблемы с панелью обновлений.

Определите следующие свойства панели обновления, если вы используете более одной панели обновления и обновление одной панели изменяет данные другой панели обновления.

Для панели обновления

  1. ChildrenAsTriggers = истина
  2. EnableViewState = true (если вы используете эту функцию)
  3. Режим обновления = Всегда

Используйте те же свойства для другой панели обновлений на той же странице.

Если вы найдете это полезным, отметьте его как свой ответ, иначе дайте мне знать....

person AnandMohanAwasthi    schedule 09.11.2011

Попробуйте закомментировать панель обновления, если она есть. Затем попробуйте нажать кнопку, на странице должна быть какая-то ошибка. Я тоже сталкивался с подобными проблемами.

person Mohan Sharma    schedule 07.09.2011

В моем случае ни одно из событий (ни кнопка, ни флажок) не срабатывало. Я смог преодолеть эту проблему, используя следующий способ.

На моей мастер-странице я закрыл тег, ссылающийся на внешний файл .js с обозначением /> вместо <script></script>.

например: изменить <script src='../../Scripts/common/menu.Js' type='text/javascript' /> на <script src='../../Scripts/common/menu.Js' type='text/javascript' ></script>

Надеюсь, это поможет тебе, Рамеш.

person Ramesha KS    schedule 01.07.2012