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

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

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

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

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

Есть мысли?

Ответы [ 3 ]

3 голосов
/ 16 августа 2008

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

1 голос
/ 18 августа 2008

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

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

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

AjaxControlToolkit.ModalPopupExtender mpe = 
    (AjaxControlToolkit.ModalPopupExtender) 
          MyModalPage.FindControl("modalPopup");
mpe.Show();
0 голосов
/ 16 августа 2008

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

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

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

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