На стороне сервера, как определить, что ModalPopupExtender в настоящее время скрыт?

У меня есть такая страница, и структура управления такая же.

  • UpdatePanel
    • Button
    • ModalPopupExtender
    • ModalPopup Content Container

Изначально ModalPopup Content Container — пустой элемент управления.

После того, как пользователь нажмет на Button, будет запущена асинхронная обратная передача. Во время обратной передачи сервер генерирует содержимое и добавляет его к ModalPopup Content Container. Также устанавливает свойства ModalPopupExtender. Наконец, вызывает метод ModalPopupExtender.Show() и метод UpdatePanel.Update() для отображения модального всплывающего окна.

Этот метод отлично работает, если все элементы управления в ModalPopup Content Container содержат простые элементы управления. Если элемент управления представляет собой кнопку, которая должна выполнять обратную передачу на серверную сторону, это проблема.

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

Моя идея состоит в том, чтобы определить, скрыт или показан ModalPopupExtender на стороне клиента, чтобы повторно сгенерировать динамический элемент управления в ModalPopup Content Container.

Итак, мой вопрос заключается в том, как определить, что ModalPopupExtender скрыто или показано.

Если вы считаете, что мой метод вообще не работает, пожалуйста, дайте мне несколько советов. Спасибо!


person Alex Yeung    schedule 06.01.2011    source источник


Ответы (1)


Один из способов — использовать логическое свойство в ViewState, чтобы отслеживать состояние всплывающего окна, т. е. до или после вызова метода .Show установить для него значение true. Затем при закрытии диалога вы устанавливаете его в false.

Вы также можете использовать HiddenField, если хотите что-то сделать на стороне клиента.

person gbs    schedule 06.01.2011
comment
Это единственный способ сделать это? Я уже говорил об этом раньше, однако я пытаюсь взглянуть на исходную логику ModalPopupExtender. - person Alex Yeung; 06.01.2011
comment
Я не думаю, что mpe раскрывает какое-либо такое свойство, поэтому вашим следующим вариантом будет написать собственный элемент управления, производный от MPE, с желаемой функциональностью. - person gbs; 06.01.2011