Будет ли перемещение элемента управления в привязки событий разрыва главной страницы? - PullRequest
0 голосов
/ 19 января 2010

Скажем, у вас есть кнопка в веб-форме, а OnClick привязан к событию с выделенным кодом.

Затем вы перемещаете эту кнопку вверх на главную страницу, добавляя ее в коллекцию Controls элемента управления на главной странице. Это делается во время выполнения, в событии Page_Load.

Где сейчас связано событие OnClick? Все еще код позади веб-формы, или это выглядит в коде главной страницы?

Я так и сделал, и теперь моя кнопка ничего не делает. Он отправляет страницу назад, но на самом деле не запускает связанное событие в коде позади.

Я проверил HTML кнопки в обоих случаях. Единственное, что изменилось, - это идентификатор и имя, отражающие изменение в контейнере именования:

В веб-форме («MainContent» является держателем ContentPlaceholder):

<input type="submit" id="ctl00_MainContent_DeleteButton" value="Yes, Delete" name="ctl00$MainContent$DeleteButton"/>    

На главной странице:

<input type="submit" id="ctl00_DeleteButton" value="Yes, Delete" name="ctl00$DeleteButton"/>

Я запустил отладчик и могу подтвердить, что он больше не касается связанного события.

Идентификатор или имя связывают его с событием? Если да, переместит ли я это на главную страницу эту привязку?

Ответы [ 3 ]

0 голосов
/ 19 января 2010

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

а. объявлены в той же области, в которой они определены, или

б. программно назначен.

0 голосов
/ 19 января 2010

Возможно, у вас отключился жизненный цикл выполнения элемента управления из-за перемещения.

Вы сказали, что перемещаете элемент управления во время Page_Load, что происходит ПОСЛЕ обработки данных обратной передачи, но до срабатывания уведомлений об изменениях обратной передачи и обработчиков.

Справочник по жизненному циклу выполнения управления

Также это говорит о том, что UniqueID имеет значение при обратной обработке, но я не уверен насчет событий.

0 голосов
/ 19 января 2010

То, что связывает элемент управления с событием codebehind, является атрибутом (например: <asp:Button ... OnClick="btnSubmit_click">), и этот атрибут, по-видимому, отсутствует в приведенных выше примерах.

Дважды щелкните по кнопке на главной странице, и она должна подключить событие. Если вы серьезно относитесь к обработке событий, вы также найдете много интересного:)

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