У меня есть пользовательский контроль asp.net, который представляет всплывающее диалоговое окно. По сути, это оболочка для диалогового окна пользовательского интерфейса jQuery, которая может быть разделена на подклассы для простого создания диалогов.
Как часть этого элемента управления, мне нужно вставить div в страницу, на которой используется элемент управления, либо в самом верху, либо в самом низу формы, чтобы при создании экземпляра всплывающего окна его родитель изменялся на этот div , Это позволяет «вложенным» всплывающим окнам без попадания дочернего всплывающего окна в родительское всплывающее окно.
Проблема в том, что я не могу найти безопасный способ вставить этот div на страницу. У usercontrol нет события preinit, поэтому я не могу сделать это там, и вызов Page.Form.Controls.Add (...) в Init, Load или PreRender вызывает стандартное исключение «Коллекция элементов управления не может быть изменена во время фаз DataBind, Init, Load, PreRender или Unload. "
Я думал, что нашел решение, используя ...
ScriptManager.RegisterClientScriptBlock(Page, Me.GetType, UniqueID + "_Dialog_Div", containerDiv, False)
... которая, казалось, работала нормально, но недавно коллега попыталась поместить UpdatePanel в диалог, и теперь она получает ошибку "Тег сценария зарегистрирован для типа 'ASP.controls_order_viewzips_ascx' и ключа 'ctl00 $ ContentBody $ OViewZips_Dialog_Div 'содержит недопустимые символы вне тегов сценария:. Только правильно отформатированные теги сценария могут быть зарегистрированы. "
Как вы должны добавить элементы управления в коллекцию элементов управления страницы из пользовательского элемента управления?