ASP.NET ITemplate与TemplateInstance.Multiple

时间:2009-12-08 16:23:50

标签: asp.net templates user-controls

我似乎无法找到有关如何使用多个实例实现ITemplates的任何示例。我需要做的就是构建一个导航,其中包含每个导航项目内容的模板。

2 个答案:

答案 0 :(得分:2)

如果您的控件不是数据绑定控件,则可以通过以下方式解决问题。但是,我还没有测试过它。

public class FooItem : WebControl, INamingContainer
{

    protected override CreateChildControls()
    {
        Control placeHolder = this.FindControl(((Foo)this.Parent).ItemPlaceHolderId);
        if (placeHolder != null)
        {
            // Add some controls to the placeHolder.
        }
    }

}

public class Foo : WebControl, INamingContainer
{

    public ITemplate ItemTemplate { get; set; }

    public string ItemPlaceHolderId
    {
        get { ... }
        set { ... }
    }

    public FooItemCollection Items
    {
        get { ... }
    }

    protected override CreateChildControls()
    {
        foreach (FooItem item in this.Items)
        {
            this.ItemTemplate.InstantiateIn(item);
        }
    }

}

答案 1 :(得分:1)

查看创建数据绑定模板化控件的文档。

不幸的是,我发现的最好的文档来自.NET 1.1: Developing a Templated Data-Bound Control


来自MSDN的说明:

  

此TemplateInstanceAttribute类   是可选的。如果是模板属性   没有扩展   TemplateInstanceAttribute类,   默认值,Multiple字段,是   使用

因此,不使用ITemplate的任何TemplateInstanceAttribute示例都使用TemplateInstance.Multiple