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

StackOverflow https://stackoverflow.com/questions/12671

  •  08-06-2019
  •  | 
  •  

Вопрос

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

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

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

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

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

Это было полезно?

Решение

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

Другие советы

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

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

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

AjaxControlToolkit.ModalPopupExtender mpe = 
    (AjaxControlToolkit.ModalPopupExtender) 
          MyModalPage.FindControl("modalPopup");
mpe.Show();

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top