Définit le comportement nécessaire pour remplir un contrôle serveur ASP.NET fondé sur un modèle avec des contrôles enfants. Les contrôles enfants représentent les modèles inline définis sur la page.
Espace de noms : System.Web.UI
Assembly : System.Web (dans system.web.dll)
Visual Basic (Déclaration)
Public Interface ITemplate
Visual Basic (Utilisation)
Dim instance As ITemplate
public interface ITemplate
public interface class ITemplate
public interface ITemplate
public interface ITemplate
Cette interface est employée par des contrôles serveur personnalisés, qui toutefois ne l'implémentent jamais. ASP.NET l'implémente toujours.
L'exemple de code suivant illustre un contrôle serveur simple basé sur un modèle qui utilise l'interface ITemplate pour créer une propriété basée sur un modèle.
Imports System
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
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));
}
}
}
}
package TemplateControlSamples;
import System.*;
import System.Web.*;
import System.Web.UI.*;
public class TemplateItem extends Control implements INamingContainer
{
private String _message = null;
public TemplateItem(String message)
{
_message = message;
} //TemplateItem
/** @property
*/
public String get_Message()
{
return _message ;
} //get_Message
/** @property
*/
public void set_Message ( String value )
{
_message = value;
} //set_Message
} //TemplateItem
/** @attribute ParseChildren(true)
*/
public class Template1 extends Control implements INamingContainer
{
private ITemplate _messageTemplate = null;
private String _message = null;
/** @property
*/
public String get_Message()
{
return _message ;
} //get_Message
/** @property
*/
public void set_Message ( String value )
{
_message = value;
} //set_Message
/** @attribute PersistenceMode(PersistenceMode.InnerProperty)
@attribute TemplateContainer(TemplateItem.class)
*/
/** @property
*/
public ITemplate get_MessageTemplate()
{
return _messageTemplate ;
}
/** @property
*/
public void set_MessageTemplate ( ITemplate value )
{
_messageTemplate = value;
}
protected void CreateChildControls()
{
// If a template has been specified, use it to create children.
// Otherwise, create a single LiteralControl with the message value.
if ( get_MessageTemplate() != null ) {
get_Controls().Clear();
TemplateItem i = new TemplateItem(this.get_Message());
get_MessageTemplate().InstantiateIn(i);
get_Controls().Add(i);
}
else {
this.get_Controls().Add(new LiteralControl(this.get_Message()));
}
} //CreateChildControls
} //Template1
import System
import System.Web
import System.Web.UI
package TemplateControlSamplesJS{
class TemplateItem extends Control implements INamingContainer{
private var message : String = null
function TemplateItem(message : String){
this.message = message
}
function get Message() : String{
return message
}
function set Message(value : String){
message = value
}
}
public ParseChildren(true)
class Template1JS extends Control implements INamingContainer{
private var messageTemplate : ITemplate = null
private var message : String = null
function get Message(): String{
return message
}
function set Message(value : String){
message = value
}
public TemplateContainer(TemplateItem)
function get MessageTemplate() : ITemplate{
return messageTemplate
}
function set MessageTemplate(value : ITemplate){
messageTemplate = value
}
protected function CreateChildControls(){
// if(a template has been specified, use it to create children.
// Otherwise, create a single literalcontrol with message value
if(MessageTemplate != null){
Controls.Clear()
var I : TemplateItem = new TemplateItem(this.Message)
MessageTemplate.InstantiateIn(I)
Controls.Add(I)
}else
this.Controls.Add(new LiteralControl(this.Message))
}
}
}
Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Édition Media Center, Windows XP Professionnel Édition x64, Windows XP SP2, Windows XP Starter Edition
Le .NET Framework ne prend pas en charge toutes les versions de chaque plate-forme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise.
.NET Framework
Prise en charge dans : 2.0, 1.1, 1.0