ASP.NET AJAX вложенная панель обновления ModalPopup фанковость

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

  •  02-07-2019
  •  | 
  •  

Вопрос

Похоже, что в некоторых случаях, если вы в конечном итоге получаете вложенные modalPopups, обернутые UpdatePanels (не идеально, я знаю, и, вероятно, их следует реорганизовать, но это то, с чем мы работаем из-за того, как были написаны некоторые пользовательские элементы управления, которые мы хотели использовать повторно), когда вы запускаете обратную отправку, которая должна открыть вложенный ModalPopup, вместо этого он закрывает родительский.В качестве аргумента, если я установлю точку останова и запущу

((ModalPopupExtender)this.Parent.Parent.FindControl("modalPopupExtender'sID").Show();

непосредственно перед вызовом дочернего метода Show() ModalPopup он работает так, как мы изначально ожидали.Мне кажется, что, поскольку, когда UpdatePanels вложены, они могут отправлять обратно своего родителя, родительский ModalPopup "не знает", что он должен отображаться, и перезагружает видимость своей панели с нуля как false.Поскольку дочерний ModalPopup затем вложен внутрь родительской панели, видимость которой равна false , вызов Show() для нее также не имеет эффекта.Таким образом, вместо того, чтобы открывать другой ModalPopup, текущий закрывается.Это не ошибка, просто поведение, которого мы не ожидали, поэтому его было трудно отследить без каких-либо исключений, но я думаю, что приведенное выше объяснение имеет смысл...Если я неправильно понял проблему, пожалуйста, проясните ее и просветите меня, потому что, похоже, это происходит не всегда, как я думал!
На данный момент для данной конкретной ситуации мы застряли в переписывании некоторых из этих элементов управления, чтобы не создавать вложенные панели обновления, поэтому этого не произойдет, но мне любопытно:
Кто-нибудь сталкивался с этой проблемой раньше, и придумали ли вы какой-нибудь умный обходной путь, который не включает вызов FindControl() для повторного показа() рассматриваемого ModalPopup?

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

Решение

Я решил эту проблему!
Если вы измените UpdateMode для UpdatePanel на "Условный", родительская UpdatePanel не будет отправлять ответные сообщения, когда дочерняя UpdatePanel отправит ответные сообщения, и тогда их вложение вообще не будет проблемой!
Я не уверен, почему UpdateMode="Всегда" используется по умолчанию, но урок усвоен.

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