Я нашел странный, нелегкий обходной путь для этого, но вот оригинальный вопрос ... последние размышления после перерыва:
Прошло много времени с тех пор, как я опубликовал на стеке переполнение, но это всегда было лучшее место для меня, чтобы избавиться от моих проблем программирования.
Вот моя проблема (только необходимая информация):
У меня есть веб-приложение asp.net.
В веб-приложении у меня есть страница «main.aspx».
Файл main.aspx состоит из двух основных частей:
Пользовательский UserControl для навигации, который включен в разметку (т.е. не загружен динамически) - здесь нет проблем .
Элемент управления PlaceHolder, который используется для динамического добавления пользовательского элемента управления в коде позади, в зависимости от того, что нажимается в элементе управления навигацией. Обратите внимание, что этот PlaceHolder находится внутри UpdatePanel ... Эти UserControls загружаются нормально, и состояние сохраняется (наконец-то!) - здесь нет проблем .
Сейчас - вот в чем проблема ... Некоторые из этих динамически загружаемых пользовательских элементов управления (помещенных в PlaceHolder, упомянутый выше) содержат элемент управления CKEditor для веб-редактирования HTML. Сам UserControl загружается хорошо - состояние сохраняется, , но элемент управления CKEditor никогда не показывает ... при создании UserControl я могу установить часы, и экземпляр CKEditor не равен нулю, но он просто не показать в отрендеренном HTML. Если я переместлю его в UpdatePanels или из него или в другое место внутри этого динамически загружаемого UserControl, это не пойдет. Однако если я возьму CKEditor Control из UserControl и поместу его в любой другой не динамически загружаемый элемент управления где-либо еще в веб-приложении, он будет отображаться нормально.
После того, как некоторые вещи были опробованы, похоже, что это не просто проблема с CKEditor - я попытался использовать один из моих собственных пользовательских контролей навигации, упомянутых выше, вместо элемента управления CKEditor, и у него возникла та же проблема - не появляться. *
Сводка: пользовательские элементы управления, включенные в динамически загружаемый UserControl, не отображаются.
У кого-нибудь есть какие-либо предложения или мудрость, чтобы поделиться? Будучи относительно новым для ASP.NET, я предполагаю, что упускаю что-то очевидное. Дайте мне знать, если вы хотите увидеть какой-то конкретный код.
Оказывается, что если первый динамический UserControl, который загружен, содержит CKEditor, то он работает на всех последующих динамических UserControl, которые меняются местами. Если первый загруженный в него не имеет, он не поднимается на следующих - также, идентификаторы должны быть одинаковыми для разных элементов управления, которые его используют. Все это кажется мне очень странным - обходной путь работает нормально, просто он кажется очень не интуитивным - связано ли это с расположением в жизненном цикле страницы, в котором создается CKEditor, или чем-то вроде ViewState? В любом случае, сейчас это работает, и я могу двигаться дальше. Теперь я помню, почему мне было удобнее работать без веб-разработки!