如何以编程方式为模板化控件创建默认模板?

时间:2010-05-28 14:05:03

标签: c# asp.net web-controls

我正在创建一个自定义模板化复合控件。如果标记中没有指定“ItemTemplate”,如何以编程方式创建默认模板?

1 个答案:

答案 0 :(得分:0)

是的,也许在发布我的问题之前我应该​​稍微玩一下。我创建了以下类:

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为null时,我实例化一个新的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);

这是一个体面的方式吗?我真的只是想起了什么似乎很自然,所以如果你有任何反馈我会很感激。

干杯, 詹姆斯