Предлагаемые решения не сработали для меня. Я нашел следующие решения:
Либо заставьте свой пользовательский элемент управления наследовать от Panel
вместо только UserControl
, либо, если у вас более одного контента, как в моем случае, задайте для полей контента значение PlaceHolder
s вместо простых Control
s.
[PersistenceMode(PersistenceMode.InnerProperty)]
добавлено, чтобы избежать предупреждения проверки XHTML.
public partial class DrawerControl : UserControl
{
[PersistenceMode(PersistenceMode.InnerProperty)]
public PlaceHolder BodyContent { get; set; }
[PersistenceMode(PersistenceMode.InnerProperty)]
public PlaceHolder GripContent { get; set; }
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
phBodyContent.Controls.Add(BodyContent);
phGripContent.Controls.Add(GripContent);
}
}
phBodyContent
и phGripContent
являются PlaceHolder
с.
Таким образом, я могу использовать свой элемент управления с любым контентом в ASPX:
<local:Drawer ID="ctlDrawer" runat="server">
<BodyContent>
<!--Insert any ASP content here-->
</BodyContent>
<GripContent>
<!--Insert any ASP content here-->
</GripContent>
</local:Drawer>