Я хочу создать WebControl, который может размещать внутри него разметку и выполнять собственное динамическое создание дочерних элементов управления. Проблема, с которой я столкнулся, заключается в том, что я (пока) не могу отрендерить элементы управления, размещенные в разметке (см. Пример ниже), отдельно от создаваемых мной дочерних элементов управления.
Я знаю, что мне нужно настроить класс с этими двумя флагами:
[ParseChildren(false)]
[PersistChildren(true)]
public class OuterControl : WebControl
{
...
}
И примерная разметка будет выглядеть так:
<custom:OuterControl>
<asp:TextBox ...>
<custom:OuterControl>
Внутри RenderContents () у меня есть некоторые элементы управления, которые мне нужно добавить в дерево элементов управления, визуализировать, а затем визуализировать те, которые заключены в разметку в определенной части. Например.:
protected override void RenderContents(HtmlTextWriter output)
{
EnsureChildControls();
[ Misc work, render my controls ]
[** Would like to render wrapped children here **]
[ Possibly other misc work ]
}
Как уже говорилось, я могу либо заставить свои элементы управления, созданные в коде, отображать дважды при вызове RenderChildren (), либо обернутые элементы управления вообще не отображать, удалив эту строку. Штопать.
Мысли?