ITemplate Interface
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Defines the behavior for populating a templated ASP.NET server control with child controls. The child controls represent the inline templates defined on the page.
public interface class ITemplatepublic interface ITemplatetype ITemplate = interfacePublic Interface ITemplate- Derived
Examples
The following code example demonstrates a simple templated server control that uses the ITemplate interface to create a templated property.
using System;
using System.Web;
using System.Web.UI;
namespace TemplateControlSamples {
    public class TemplateItem : Control, INamingContainer {
        private String     _message         = null;
        public TemplateItem(String message) {
            _message = message;
        }
        public String Message {
           get {
              return _message;
           }
           set {
              _message = value;
           }
        }
    }
    [System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name="FullTrust")]
    [ParseChildren(true)]
    public class Template1 : Control, INamingContainer {
        private ITemplate  _messageTemplate = null;
        private String     _message         = null;
        public String Message {
           get {
              return _message;
           }
           set {
              _message = value;
           }
        }
        [
            PersistenceMode(PersistenceMode.InnerProperty),
            TemplateContainer(typeof(TemplateItem))
        ]
        public ITemplate MessageTemplate {
           get {
              return _messageTemplate;
           }
           set {
              _messageTemplate = value;
           }
        }
        protected override void CreateChildControls() {
           // If a template has been specified, use it to create children.
           // Otherwise, create a single LiteralControl with the message value.
           if (MessageTemplate != null) {
              Controls.Clear();
              TemplateItem i = new TemplateItem(this.Message);
              MessageTemplate.InstantiateIn(i);
              Controls.Add(i);
           }
           else {
              this.Controls.Add(new LiteralControl(this.Message));
           }
        }
    }
}
Imports System.Web
Imports System.Web.UI
Namespace TemplateControlSamplesVB
    Public Class TemplateItem
        Inherits Control
        Implements INamingContainer
        Private _message As String = Nothing
        Public Sub New(Message As String)
            _message = message
        End Sub
        Public Property Message As String
           Get
              Return _message
           End Get
           Set
              _message = Value
           End Set
        End Property
    End Class
    <System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.Demand, Name:="FullTrust"), _
    ParseChildren(true)> _
    Public Class Template1VB
        Inherits Control
        Implements INamingContainer
        Private _messageTemplate As ITemplate = Nothing
        Private _message As String = Nothing
        Public Property Message As String
           Get
              Return _message
           End Get
           Set
              _message = Value
           End Set
        End Property
        <TemplateContainer(GetType(TemplateItem))> _
        Public Property MessageTemplate As ITemplate
           Get
              Return _messageTemplate
           End Get
           Set
              _messageTemplate = Value
           End Set
        End Property
        Protected Overrides Sub CreateChildControls()
           ' If a template has been specified, use it to create children.
           ' Otherwise, create a single LiteralControl with the message value.
           If Not (MessageTemplate Is Nothing)
              Controls.Clear()
              Dim I As New TemplateItem(Me.Message)
              MessageTemplate.InstantiateIn(I)
              Controls.Add(I)
           Else
              Me.Controls.Add(New LiteralControl(Me.Message))
           End If
        End Sub
    End Class
End Namespace
Remarks
This interface is used by custom server controls, but never implemented by them. ASP.NET always implements it.
Methods
| InstantiateIn(Control) | When implemented by a class, defines the Control object that child controls and templates belong to. These child controls are in turn defined within an inline template. |