语境:
一个 AJAX 控件工具包TabContainer
,其中每个TabPanel
都是用代码生成的,它的 ContentTemplate 是一个自定义控件。
自定义控件对应于直接在TabPanel
's中的内容ContentTemplate
:
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="TabContentTemplateTest.ascx.cs" Inherits="WebGUI.Controls.TabContentTemplateTest" %>
<asp:Label runat="server" ID="TabText" />
和后面的代码:
public partial class TabContentTemplateTest : UserControl, ITemplate
{
public string Number { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
TabText.Text = Number;
}
public void InstantiateIn(Control container)
{
container.Controls.Add(this);
}
}
创建(后面的代码TabContainerTest
,有一个TabContainer
命名SamplesTabContainer
):
public string[] Numbers = { "zero", "one", "two", "three", "four" };
protected void Page_Load(object sender, EventArgs e)
{
for (int i = 0; i < 5; i++)
{
var tabContent = LoadControl("~/Controls/TabContentTemplateTest.ascx") as TabContentTemplateTest;
tabContent.Number = Numbers[i];
SamplesTabContainer.Tabs.Add(new TabPanel
{
HeaderText = i.ToString(),
ContentTemplate = tabContent
});
}
}
问题是内容(这里简化为标签)没有显示。
如何从 ASPX 生成自定义控件ContentTemplate
并显示它?