Встроенные пользовательские теги - это свойства вашего элемента управления.Чтобы включить их настройку в разметке, вам необходимо украсить свой элемент управления и свойства следующими атрибутами:
- Элемент управления: ParseChilden, PersistChildren
- Свойства: PersistenceMode
Пример из элемента управления, который я использую, который делает нечто подобное:
/// <summary>
/// Control that will conditionally show one of two views
/// </summary>
[ParseChildren(true)]
[PersistChildren(true)]
public class EditingView : CompositeControl
{
#region private fields
private View _displayView = new View();
private View _editView = new View();
#endregion
#region properties
/// <summary>
/// The view that will be rendered in display mode
/// </summary>
[PersistenceMode(PersistenceMode.InnerProperty)]
public View DisplayView
{
get
{
return _displayView;
}
set
{
_displayView = value;
}
}
/// <summary>
/// The view that will be rendered in editing mode
/// </summary>
[PersistenceMode(PersistenceMode.InnerProperty)]
public View EditView
{
get
{
return _editView;
}
set
{
_editView = value;
}
}
/* Implementation details hidden */
}
Просмотрите атрибуты в msdn, чтобы узнать, что именно они делают.Выше следует сделать то, что вам нужно сделать, хотя.Затем в разметке я могу просто назначить два вида:
<ctl:EditingView runat="server">
<DisplayView>
blah blah
</DisplayView>
<EditView>
blah blah edit
</EditView>
</ctl:EditingView>
Единственное отличие состоит в том, что мои свойства все еще являются WebControls и принимают больше дочерних элементов управления.Это не должно иметь значения, если вы правильно установите свои атрибуты.
Менно