ITemplate インターフェイス
テンプレート宣言された ASP.NET サーバー コントロールに子コントロールを設定する動作を定義します。子コントロールは、そのページ上に定義されるインライン テンプレートを表します。
名前空間: System.Web.UI
アセンブリ: System.Web (system.web.dll 内)
構文
'宣言
Public Interface ITemplate
'使用
Dim instance As ITemplate
public interface ITemplate
public interface class ITemplate
public interface ITemplate
public interface ITemplate
適用できません。
解説
このインターフェイスは、カスタム サーバー コントロールによって使用されますが、実装されることはありません。ASP.NET は、常にこのインターフェイスを実装します。
トピック | 場所 |
---|---|
方法 : template 宣言された ASP.NET ユーザー コントロールを作成する | Visual Studio ASP .NET での Web アプリケーションの作成 |
方法 : DataList Web サーバー コントロールのテンプレートを動的に作成する | Visual Studio ASP .NET での Web アプリケーションの作成 |
方法 : template 宣言された ASP.NET ユーザー コントロールを作成する | Visual Studio ASP .NET での Web アプリケーションの作成 |
方法 : DataList Web サーバー コントロールのテンプレートを動的に作成する | Visual Studio ASP .NET での Web アプリケーションの作成 |
方法 : template 宣言された ASP.NET ユーザー コントロールを作成する | ASP .NET Web アプリケーションの作成 |
方法 : DataList Web サーバー コントロールのテンプレートを動的に作成する | ASP .NET Web アプリケーションの作成 |
使用例
ITemplate インターフェイスを使用して、テンプレート宣言されたプロパティを作成する、テンプレート宣言された簡単なサーバー コントロールのコード例を次に示します。
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))
}
}
}
.NET Framework のセキュリティ
- AspNetHostingPermission (ホスト環境での動作に必要なアクセス許可)要求値 : LinkDemand; アクセス許可値 : Minimal。
- AspNetHostingPermission (ホスト環境での動作に必要なアクセス許可)要求値 : InheritanceDemand; アクセス許可値 : Minimal。
プラットフォーム
Windows 98,Windows Server 2000 SP4,Windows CE,Windows Millennium Edition,Windows Mobile for Pocket PC,Windows Mobile for Smartphone,Windows Server 2003,Windows XP Media Center Edition,Windows XP Professional x64 Edition,Windows XP SP2,Windows XP Starter Edition
Microsoft .NET Framework 3.0 は Windows Vista,Microsoft Windows XP SP2,および Windows Server 2003 SP1 でサポートされています。
バージョン情報
.NET Framework
サポート対象 : 3.0,2.0,1.1,1.0