【发布时间】:2010-05-29 00:02:56
【问题描述】:
我正在创建一个自定义模板复合控件。如果标记中没有指定“ItemTemplate”,如何以编程方式创建默认模板?
【问题讨论】:
标签: c# asp.net web-controls
我正在创建一个自定义模板复合控件。如果标记中没有指定“ItemTemplate”,如何以编程方式创建默认模板?
【问题讨论】:
标签: c# asp.net web-controls
好吧,也许我应该在发布我的问题之前先玩一下它。我创建了以下类:
internal class ItemTemplateDefault : ITemplate
{
public void InstantiateIn(Control container)
{
Literal lit = new Literal();
CountrySelectorItemContainer cont = container as CountrySelectorItemContainer;
lit.Text = string.Format("<li>\n\t<a href=\"{0}\" title=\"{1}\">{1}</a>\n</li>", cont.ItemURL, cont.ItemText);
container.Controls.Add(lit);
}
}
因此,如果 ItemTemplate 为空,我将实例化一个新的 ItemTemplateDefault 并将其分配为 ItemTemplate。见下文。
if (this.ItemTemplate == null)
this.ItemTemplate = new ItemTemplateDefault();
CountrySelectorItemContainer container = new CountrySelectorItemContainer();
container.ItemText = "My Country";
container.ItemURL = "http://myurl.com";
this.ItemTemplate.InstantiateIn(container);
Controls.Add(container);
这是一种体面的做法吗?我真的只是想出了看起来很自然的东西,所以如果您有任何反馈,我将不胜感激。
干杯, 詹姆斯
【讨论】: