Обработчик событий элемента управления ASP.NET не запускается при обратной передаче? - PullRequest
1 голос
/ 13 апреля 2010

У меня есть элемент управления, который имеет ImageButton, который связан с событием OnClick ... При нажатии на этот элемент управления выполняется обратная передача, и обработчик события не вызывается. AutoEventWireup имеет значение true, и я дважды проверил орфографию и т. Д. Мы не трогали этот элемент управления более года, и он работал нормально всего пару недель назад.

Мы внесли изменения в элементы управления, которые загружают этот элемент управления ... поэтому мне интересно, какие изменения мы могли бы внести, чтобы не вызывать этот обработчик событий? Происходит довольно много Javascript, так что это тоже может быть виновником ...

Редактировать: Некоторые пояснения ... мы динамически загружаем родительский элемент управления ImageButton в событии OnLoad страницы ..., если это имеет смысл.

Ответы [ 6 ]

2 голосов
/ 13 апреля 2010

Вы дали ImageButton идентификатор?

2 голосов
/ 13 апреля 2010

AutoEventWireup не имеет значения. Ваш ImageButton загружен динамически, то есть не записан в разметке? Если он загружен на страницу в конце жизненного цикла страницы, например в PreRender событие не сработает.

Если есть проблема с JavaScript, ваша страница не будет даже PostBack. Это происходит?

1 голос
/ 13 апреля 2010

Я определенно согласен с тем, что сказал BritishDeveloper. У меня была похожая проблема, когда я динамически загружал элементы управления, но я не мог получить ссылку на элемент управления, используя Page.FindControl("controlName") Кто-то указал, что мне нужно помнить о жизненном цикле страницы. Я обнаружил, что мне нужно убедиться, что загружен элемент управления в PageInit, потому что после асинхронной обратной передачи элемент управления все еще был там, но не загружен в обратной передаче, поэтому найти его было невозможно. Это было все в csharp codebehind и ajax, но я предполагаю, что элемент управления не перезагружается.

0 голосов
/ 24 февраля 2013

Я могу рассказать немного подробнее ... Я просто потерял несколько часов, исправляя свою проблему, аналогичную описанной здесь. В процессе создания некоторых элементов управления поиском я добавил пару кнопок ImageButton и установил для них свойства PostbackUrl. Несколько дней спустя во время тестирования нового кода я заметил, что ни одна из моих других кнопок в веб-форме не отправляла должным образом сообщения. Они будут запускать обратную передачу, но кодовая часть ведет себя так, как если бы каждая обратная передача была начальным запросом страницы, и ни один из обработчиков событий не запускался.

После нескольких часов устранения неполадок я наткнулся на этот пост. Когда я вернулся и удалил PostbackUrl из этих двух кнопок ImageButton, все вернулось на круги своя. Я не знаю, почему это вызвало эту проблему, но исправление, упомянутое здесь, сработало для меня. Я хочу добавить, что мои кнопки ImageButton не были добавлены динамически ... они были в разметке, и эта проблема все еще возникла. Поиск в вашей разметке любых элементов управления с установленным PostbackUrl ... удалите это (запрограммируйте вокруг него, если необходимо) ... посмотрите, будут ли ваши обработчики событий работать правильно.

0 голосов
/ 23 июля 2010

Если вы создаете элемент управления динамически. Каждый раз, когда вы запускаете обратную передачу, используя новый созданный элемент управления, вам необходимо его воссоздать. Просто подумайте, что ваше приложение работает на сервере. Как сервер может хранить информацию об элементах управления, созданных динамически? Не используйте Page.IsPostBack для создания обратной передачи. PostbackUrl - плохое решение. Обходной путь потребуется.

0 голосов
/ 14 апреля 2010

Итак, как оказалось, мы установили свойство PostbackUrl на одну из наших кнопок в элементе управления A ... это заставило обработчики событий для элемента управления B не запускаться, когда была нажата кнопка управления B .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...