Как я могу передать данные со страницы aspx в модальное всплывающее окно ascx?

Я довольно новичок в ASP.NET и пытаюсь узнать, как это делается. Я пришел из C #, поэтому часть кода легка, но думать, как веб-разработчик, незнакомо.

У меня есть страница aspx, которая содержит сетку флажков. У меня есть кнопка, которая кодируется с помощью события Button_Click, чтобы собрать список проверяемых строк и создать переменную сеанса из этого списка. На эту же кнопку ссылается (через TargetControlID) ModalPopupExtender моей страницы ascx, которая управляет панелью на странице ascx.

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

Поскольку две страницы разделены, я не могу вызвать ModalPopupExtender из кода aspx.cs, я не могу получить список флажков из кода ascx.cs, и я не вижу способа заполнить мою переменную сеанса а затем программно активировать другую скрытую кнопку или элемент управления, который откроет мое модальное всплывающее окно.

Есть предположения?

15.08.2008 20:01:23
3 ОТВЕТА
РЕШЕНИЕ

Весь файл usercontrol (.ascx) - это набор элементов управления, которые вы сгруппировали вместе, чтобы обеспечить некоторую функциональность многократного использования. Определенные в нем элементы управления все еще добавляются в коллекцию элементов управления страницы (.aspx) в течение срока действия страницы. ModalPopupExtender использует javascript и dhtml, чтобы показать и скрыть элементы управления на стороне клиента usercontrol. Вы видите, что событие click обрабатывается клиентской стороной ModalPoupExtender и отменяет обратную передачу на сервер. Это стандартное поведение по дизайну. Вы, конечно, можете получить доступ к коллекции элементов управления страницы из кода своего пользовательского элемента управления, поскольку все они являются частью одного и того же дерева элементов управления. Просто используйте метод FindControl (xxx) любого элемента управления для поиска нужного вам потомка.

3
15.08.2008 20:25:28

Извините, но я в замешательстве. Вы не можете вызвать ascx напрямую, так что ...

Ваш модальный код, который вы вызываете с той же страницы, например, скрытая панель и т. Д .;

Или это еще одна страница aspx, которую вы вызываете по событию click?

0
15.08.2008 20:06:41

После некоторого исследования после ответа DancesWithBamboo я выяснил, как заставить это работать.
Пример ссылки на мою страницу ascx на моей странице aspx:

<uc1:ChildPage ID="MyModalPage" runat="server" />

Кодовый файл aspx для захвата и открытия ModalPopupExtender (с именем modalPopup) будет выглядеть следующим образом:

AjaxControlToolkit.ModalPopupExtender mpe = 
    (AjaxControlToolkit.ModalPopupExtender) 
          MyModalPage.FindControl("modalPopup");
mpe.Show();
1
3.03.2009 22:56:56