我正在尝试将模板添加到包含Label和TextBox的简化组合控件。我想我的印记,最多是这个样子:我怎样才能有一个ASP.NET模板复合控件?
<test:FormItem ID="fi" runat="server" Title="MyTitle" Text="My Text!">
<TestTemplate>
<i>
<%# Container.Title) %></i>
<br />
<%# Container.Text %>
</TestTemplate>
</test:FormItem>
我有了对TextBox和标签性能的templateContainer类。
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类我有一个正在从的CreateChildControls(称为CreateControlHierarchy()方法):
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()?
注意:我也尝试将文本框和标签添加到容器的控件集合中,它执行相同的操作。
我想创建一个复合控件(控件的控件)并允许用户在控件周围添加标记。注意:我不想创建一个UserControl。我有复合控件中控件的自定义逻辑,我希望它在各种应用程序中使用。 – rmw 2009-04-09 13:36:43