Я пытаюсь добавить шаблон в упрощенный составной элемент управления, содержащий метку и текстовое поле. Я хочу, чтобы моя пометка выглядела примерно так:
<test:FormItem ID="fi" runat="server" Title="MyTitle" Text="My Text!">
<TestTemplate>
<i>
<%# Container.Title) %></i>
<br />
<%# Container.Text %>
</TestTemplate>
</test:FormItem>
У меня есть класс templateContainer, который имеет свойства для TextBox и Label.
public class TemplateContainer : WebControl, INamingContainer
{
public TextBox Text { get { return m_item.Text; } }
public Label Title { get { return m_item.Title; } }
private FormItem m_item;
public TemplateContainer(FormItem item)
{
m_item = item;
}
}
В основном классе FormItem у меня есть метод CreateControlHierarchy (), который вызывается из CreateChildControls ():
protected virtual void CreateControlHierarchy()
{
m_itemTemplateContainer = new TemplateContainer(this);
TestTemplate.InstantiateIn(m_itemTemplateContainer);
Controls.Add(m_itemTemplateContainer);
}
То, что я ХОЧУ, для шаблона, чтобы сделать фактический контроль. Вместо этого он вызывает ToString () для элемента управления и отображает System.Web.UI.WebControls.Label и System.Web.UI.WebControls.TextBox. Есть ли способ заставить шаблон добавить элементы управления в свою коллекцию вместо того, чтобы просто вызывать ToString () для них?
Примечание. Я также попытался добавить текстовое поле и метку в коллекцию элементов управления контейнера, которая делает то же самое.