Не срабатывает событие нажатия кнопки ASP.Net - PullRequest
4 голосов
/ 24 апреля 2009

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

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

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

Ответы [ 7 ]

1 голос
/ 17 августа 2011

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

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

0 голосов
/ 01 июля 2012

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

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

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

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

0 голосов
/ 09 ноября 2011

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

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

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

  1. ChildrenAsTriggers = true
  2. EnableViewState = true (если вы используете эту функцию)
  3. UpdateMode = Always

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

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

0 голосов
/ 07 сентября 2011

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

0 голосов
/ 30 апреля 2009

вы пробовали:

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

0 голосов
/ 24 апреля 2009

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

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

0 голосов
/ 24 апреля 2009

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

Может быть, вам следует протестировать ваше приложение без ajax, чтобы выявить какие-либо проблемные места

...