ITemplate 接口
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
定义用子控件填充模板化 ASP.NET 服务器控件的行为。 子控件表示页上定义的内联模板。
public interface class ITemplatepublic interface ITemplatetype ITemplate = interfacePublic Interface ITemplate- 派生
示例
下面的代码示例演示了一个简单的模板化服务器控件,该控件使用 ITemplate 接口创建模板化属性。
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
注解
此接口由自定义服务器控件使用,但从未由它们实现。 ASP.NET 始终实现它。
方法
| InstantiateIn(Control) | 当由类实现时,定义子控件和模板所属的 Control 对象。 然后在内联模板中定义这些子控件。 |