TemplateInstanceAttribute クラス
アセンブリ: System.Web (system.web.dll 内)

<AttributeUsageAttribute(AttributeTargets.Property)> _ Public NotInheritable Class TemplateInstanceAttribute Inherits Attribute
[AttributeUsageAttribute(AttributeTargets.Property)] public sealed class TemplateInstanceAttribute : Attribute
[AttributeUsageAttribute(AttributeTargets::Property)] public ref class TemplateInstanceAttribute sealed : public Attribute

TemplateInstanceAttribute クラスを使用して、テンプレート プロパティを、1 回または複数回のインスタンス化を許可するプロパティとしてマークできます。1 回のみのインスタンス化を許可するテンプレートでは、その中に含まれるコントロールを参照させることができます。ZoneTemplate プロパティは、1 回のみインスタンス生成できるプロパティの例です。
この TemplateInstanceAttribute クラスはオプションです。テンプレート プロパティが TemplateInstanceAttribute クラスで拡張されない場合、既定値である Multiple フィールドが使用されます。属性の使用方法については、「属性を使用したメタデータの拡張」を参照してください。

TemplateInstance 列挙体と TemplateInstanceAttribute クラスの使用方法を次のコード例に示します。MyLoginViewA という名前のカスタム LoginView コントロールが AnonymousTemplate プロパティをオーバーライドして、TemplateInstanceAttribute クラスを使用して、AnonymousTemplate プロパティを 1 回のみインスタンス生成することを指定しています。
Imports Microsoft.VisualBasic Imports System Imports System.Data Imports System.ComponentModel Imports System.Web Imports System.Web.UI Imports System.Web.UI.WebControls Namespace Samples.AspNet.VB.Controls Public Class MyLoginViewA Inherits LoginView Private _anonymoustemplate As ITemplate <Browsable(False), DefaultValue(""), PersistenceMode(PersistenceMode.InnerProperty), TemplateContainer(GetType(LoginView)), TemplateInstance(TemplateInstance.Single)> _ Public Overrides Property AnonymousTemplate() As System.Web.UI.ITemplate Get Return _anonymoustemplate End Get Set(ByVal value As System.Web.UI.ITemplate) _anonymoustemplate = value End Set End Property End Class End Namespace
using System; using System.Data; using System.ComponentModel; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace Samples.AspNet.CS.Controls { public class MyLoginViewA : LoginView { private ITemplate _anonymoustemplate; [Browsable(false), DefaultValue(null), PersistenceMode(PersistenceMode.InnerProperty), TemplateContainer(typeof(LoginView)), TemplateInstance(TemplateInstance.Single) ] public override ITemplate AnonymousTemplate { get { return _anonymoustemplate; } set { _anonymoustemplate = value; } } } }
MyLoginViewA コントロールを使用する ASPX ファイルと、TemplateInstanceAttribute クラスのプロパティにアクセスする方法を次のコード例に示します。
<%@ Page Language="VB" %> <%@ Import Namespace="System.Reflection" %> <%@ Register TagPrefix="AspNetSamples" Namespace="Samples.AspNet.VB.Controls" Assembly="Samples.AspNet.VB.Controls" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) ' Get the class type for which to access metadata. Dim clsType As Type = GetType(MyLoginViewA) ' Get the PropertyInfo object for FirstTemplate. Dim pInfo As PropertyInfo = clsType.GetProperty("AnonymousTemplate") ' See if the TemplateInstanceAttribute is defined for this property. Dim isDef As Boolean = Attribute.IsDefined(pInfo, GetType(TemplateContainerAttribute)) ' Display the result if the attribute exists. If isDef Then Dim tia As TemplateInstanceAttribute = CType(Attribute.GetCustomAttribute(pInfo, GetType(TemplateInstanceAttribute)), TemplateInstanceAttribute) Response.Write("The <AnonymousTemplate> has the TemplateInstanceAttribute = " & tia.Instances.ToString() & ".<br>") If (tia.IsDefaultAttribute()) Then Response.Write("The TemplateInstanceAttribute used is the same as the default instance.") Else Response.Write("The TemplateInstanceAttribute used is not the same as the default instance.") End If End If End Sub </script> <html > <head runat="server"> <title>TemplateInstance Example</title> </head> <body> <form id="form1" runat="server"> <div> <AspNetSamples:MyLoginViewA id="MyLoginViewA1" runat="server"> <AnonymousTemplate> <asp:Label ID="LoginViewLabel1" runat="server" Text="LoginView Anonymous Template Text"/> </AnonymousTemplate> </AspNetSamples:MyLoginViewA> </div> </form> </body> </html>
<%@ Page Language="C#" %> <%@ Import Namespace="System.Reflection" %> <%@ Register TagPrefix="AspNetSamples" Namespace="Samples.AspNet.CS.Controls" Assembly="Samples.AspNet.CS.Controls" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> protected void Page_Load(object sender, EventArgs e) { // Get the class type for which to access metadata. Type clsType = typeof(MyLoginViewA); // Get the PropertyInfo object for FirstTemplate. PropertyInfo pInfo = clsType.GetProperty("AnonymousTemplate"); // See if the TemplateInstanceAttribute is defined for this property. bool isDef = Attribute.IsDefined(pInfo, typeof(TemplateInstanceAttribute)); // Display the result if the attribute exists. if (isDef) { TemplateInstanceAttribute tia = (TemplateInstanceAttribute)Attribute.GetCustomAttribute(pInfo, typeof(TemplateInstanceAttribute)); Response.Write("The <AnonymousTemplate> has the TemplateInstanceAttribute = " + tia.Instances.ToString() + ".<br>"); if (tia.IsDefaultAttribute()) Response.Write("The TemplateInstanceAttribute used is the same as the default instance."); else Response.Write("The TemplateInstanceAttribute used is not the same as the default instance."); } } </script> <html > <head runat="server"> <title>TemplateInstance Example</title> </head> <body> <form id="form1" runat="server"> <div> <AspNetSamples:MyLoginViewA id="MyLoginViewA1" runat="server"> <AnonymousTemplate> <asp:Label ID="LoginViewLabel1" runat="server" Text="LoginView Anonymous Template Text"/> </AnonymousTemplate> </AspNetSamples:MyLoginViewA> </div> </form> </body> </html>


System.Attribute
System.Web.UI.TemplateInstanceAttribute


Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- TemplateInstanceAttribute クラスのページへのリンク