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

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

PersistChildrenAttribute は、コントロールの入れ子になった内容の解釈方法を示す ParseChildrenAttribute と組み合わせて使用されます。PersistChildrenAttribute が true で、ParseChildrenAttribute が false の場合、ASP.NET サーバー コントロール内の入れ子になった内容はコントロールとして保持されます。PersistChildrenAttribute が false で、ParseChildrenAttribute が true の場合、入れ子になった内容はサーバー コントロールのプロパティとして保持されます。属性の使用方法については、「属性を使用したメタデータの拡張」を参照してください。

このセクションには、2 つのコード例が含まれています。最初のコード例では、デザイン時に、入れ子になった内容がコントロールのプロパティとして保持されるようにカスタム コントロールのメタデータを設定する方法を示しています。2 番目のコード例では、ASP.NET ページでクラスを使用する方法を示します。
次のコード例では、カスタム サーバー コントロールの入れ子になった内容を、入れ子になったコントロールとして保持しないように PersistChildrenAttribute 属性を適用する方法を示しています。CollectionPropertyControl という名前のカスタム サーバー コントロールの PersistChildrenAttribute 属性は false に設定され、追加される Employee オブジェクトは入れ子になった要素として保持されます。
' Create a namespace that defines two classes, one a custom control, Employee, ' which is created for every instance of a child element with its name ' declared in a page associated with this namespace, the other, Employees , ' which contains these child elements. Imports System Imports System.Collections Imports System.Drawing Imports System.Web Imports System.Web.UI Imports System.Web.UI.WebControls Imports System.Security.Permissions Namespace PersistChildrenSampleVB ' Create a class that will be rendered as a child of the control ' that has the ParseChildren attribute applied to it. <AspNetHostingPermission(SecurityAction.Demand, _ Level:=AspNetHostingPermissionLevel.Minimal)> _ Public NotInheritable Class Employee Private _name As String Private _title As String Private _alias As String Public Sub New() Me.New("", "", "") End Sub 'New Public Sub New(name As String, title As String, employeeAlias As String) Me._name = name Me._title = title Me._alias = employeeAlias End Sub 'New Public Property Name() As String Get Return _name End Get Set _name = value End Set End Property Public Property Title() As String Get Return _title End Get Set _title = value End Set End Property Public Property [Alias]() As String Get Return _alias End Get Set _alias = value End Set End Property End Class 'Employee ' Use the PersistChildren attribute to set the Persist ' property to false so that none of this class's ' child controls will be persisted as controls. They will ' be persisted only as child elements of this class. ' If you set the PersistChildren attribute to true, or if you ' do not include this attribute when you create a control, ' the child controls will be persisted as controls. <PersistChildren(False)> _ <AspNetHostingPermission(SecurityAction.Demand, _ Level:=AspNetHostingPermissionLevel.Minimal)> _ Public NotInheritable Class CollectionPropertyControl Inherits Control Private _header As String Private _employees As New ArrayList() Public Property Header() As String Get Return _header End Get Set _header = value End Set End Property Public ReadOnly Property Employees() As ArrayList Get Return _employees End Get End Property ' Override the CreateChildControls method to ' add child controls to the Employees property when this ' custom control is requested from a page. Protected Overrides Sub CreateChildControls() Dim label As New Label() label.Text = Header label.BackColor = Color.Beige label.ForeColor = Color.Red Controls.Add(label) Controls.Add(New LiteralControl("<BR> <BR>")) Dim table As New Table() Dim htr As New TableRow() Dim hcell1 As New TableHeaderCell() hcell1.Text = "Name" htr.Cells.Add(hcell1) Dim hcell2 As New TableHeaderCell() hcell2.Text = "Title" htr.Cells.Add(hcell2) Dim hcell3 As New TableHeaderCell() hcell3.Text = "Alias" htr.Cells.Add(hcell3) table.Rows.Add(htr) table.BorderWidth = Unit.Pixel(2) table.BackColor = Color.Beige table.ForeColor = Color.Red Dim employee As Employee For Each employee In Employees Dim tr As New TableRow() Dim cell1 As New TableCell() cell1.Text = employee.Name tr.Cells.Add(cell1) Dim cell2 As New TableCell() cell2.Text = employee.Title tr.Cells.Add(cell2) Dim cell3 As New TableCell() cell3.Text = employee.Alias tr.Cells.Add(cell3) table.Rows.Add(tr) Next employee Controls.Add(table) End Sub 'CreateChildControls End Class 'CollectionPropertyControl End Namespace ' PersistChildrenSampleVB
using System; using System.Collections; using System.Drawing; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Security.Permissions; namespace PersistChildrenSamples { // The child element class. [AspNetHostingPermission(SecurityAction.Demand, Level=AspNetHostingPermissionLevel.Minimal)] public sealed class Employee { private String name; private String title; private String alias; public Employee():this ("" ,"",""){} public Employee (String name, String title, String alias) { this.name = name; this.title = title; this.alias = alias; } public String Name { get { return name; } set { name = value; } } public String Title { get { return title; } set { title = value; } } public String Alias { get { return alias; } set { alias = value; } } } // Use the PersistChildren attribute to set the Persist // property to false so that none of this class's // child controls will be persisted as controls. They will // be persisted only as child elements of this class. // If you set the PersistChildren attribute to true, or if you // do not include this attribute when you create a control, // the child controls will be persisted as controls. [PersistChildren(false)] [AspNetHostingPermission(SecurityAction.Demand, Level=AspNetHostingPermissionLevel.Minimal)] public sealed class CollectionPropertyControl : Control { private String header; private ArrayList employees = new ArrayList(); public String Header { get { return header; } set { header = value; } } public ArrayList Employees { get { return employees; } } // Override the CreateChildControls method to // add child controls to the Employees property when this // custom control is requested from a page. protected override void CreateChildControls() { Label label = new Label(); label.Text = Header; label.BackColor = Color.Beige; label.ForeColor = Color.Red; Controls.Add(label); Controls.Add(new LiteralControl("<BR> <BR>")); Table table = new Table(); TableRow htr = new TableRow(); TableHeaderCell hcell1 = new TableHeaderCell(); hcell1.Text = "Name"; htr.Cells.Add(hcell1); TableHeaderCell hcell2 = new TableHeaderCell(); hcell2.Text = "Title"; htr.Cells.Add(hcell2); TableHeaderCell hcell3 = new TableHeaderCell(); hcell3.Text = "Alias"; htr.Cells.Add(hcell3); table.Rows.Add(htr); table.BorderWidth = 2; table.BackColor = Color.Beige; table.ForeColor = Color.Red; foreach (Employee employee in Employees) { TableRow tr = new TableRow(); TableCell cell1 = new TableCell(); cell1.Text = employee.Name; tr.Cells.Add(cell1); TableCell cell2 = new TableCell(); cell2.Text = employee.Title; tr.Cells.Add(cell2); TableCell cell3 = new TableCell(); cell3.Text = employee.Alias; tr.Cells.Add(cell3); table.Rows.Add(tr); } Controls.Add(table); } } }
次のコード例では、CollectionPropertyControl クラスと Employee クラスを ASP.NET ページで使用する方法を示しています。
<%@ Page Language="VB" %> <%@ Register TagPrefix="AspSample" Assembly="Samples.AspNet.VB.Controls" Namespace="PersistChildrenSampleVB" %> <!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) ' Create two new employees and add them to the custom control. Dim e1 As New Employee("Employee 1", "Title 1", "Alias 1") Dim e2 As New Employee("Employee 2", "Title 2", "Alias 2") CollectionPropertyControl1.Employees.Add(e1) CollectionPropertyControl1.Employees.Add(e2) ' Verify attribute values. Dim p As PersistChildrenAttribute = _ Attribute.GetCustomAttribute(GetType(CollectionPropertyControl), _ GetType(PersistChildrenAttribute)) Dim sb As New StringBuilder() sb.Append("The Persist property is " & p.Persist.ToString() & "<br>") sb.Append("The UseCustomPersistence property is " & p.UsesCustomPersistence.ToString() & "<br>") sb.Append("The IsDefault method returns " & p.IsDefaultAttribute().ToString()) Message.Text = sb.ToString() End Sub </script> <html > <head id="Head1" runat="server"> <title>PersistChildrenAttribute</title> </head> <body> <form id="Form1" runat="server"> <div> <asp:Label ID="Message" runat="server"/> <AspSample:CollectionPropertyControl id="CollectionPropertyControl1" runat="server"> </AspSample:CollectionPropertyControl> </div> </form> </body> </html>
<%@ Page Language="C#" %> <%@ Register TagPrefix="AspSample" Assembly="Samples.AspNet.CS.Controls" Namespace="PersistChildrenSamples" %> <!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) { // Create two new employees and add them to the custom control. Employee e1 = new Employee("Employee 1", "Title 1", "Alias 1"); Employee e2 = new Employee("Employee 2", "Title 2", "Alias 2"); CollectionPropertyControl1.Employees.Add(e1); CollectionPropertyControl1.Employees.Add(e2); // Verify attribute values. PersistChildrenAttribute p = (PersistChildrenAttribute)Attribute.GetCustomAttribute(typeof(CollectionPropertyControl), typeof(PersistChildrenAttribute)); StringBuilder sb = new StringBuilder(); sb.Append("The Persist property is " + p.Persist.ToString() + "<br>"); sb.Append("The UseCustomPersistence property is " + p.UsesCustomPersistence.ToString() + "<br>"); sb.Append("The IsDefault method returns " + p.IsDefaultAttribute().ToString()); Message.Text = sb.ToString(); } </script> <html > <head runat="server"> <title>PersistChildrenAttribute</title> </head> <body> <form runat="server"> <div> <asp:Label ID="Message" runat="server"/> <AspSample:CollectionPropertyControl id="CollectionPropertyControl1" runat="server"> </AspSample:CollectionPropertyControl> </div> </form> </body> </html>


System.Attribute
System.Web.UI.PersistChildrenAttribute


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 によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


PersistChildrenAttribute コンストラクタ (Boolean)
アセンブリ: System.Web (system.web.dll 内)


CollectionPropertyControl というカスタム サーバー コントロールに対して PersistChildrenAttribute 属性を適用する方法を次のコード例に示します。
このコード例は、PersistChildrenAttribute クラスのトピックで取り上げているコード例の一部分です。
' Use the PersistChildren attribute to set the Persist ' property to false so that none of this class's ' child controls will be persisted as controls. They will ' be persisted only as child elements of this class. ' If you set the PersistChildren attribute to true, or if you ' do not include this attribute when you create a control, ' the child controls will be persisted as controls. <PersistChildren(False)> _ <AspNetHostingPermission(SecurityAction.Demand, _ Level:=AspNetHostingPermissionLevel.Minimal)> _ Public NotInheritable Class CollectionPropertyControl Inherits Control Private _header As String Private _employees As New ArrayList() Public Property Header() As String Get Return _header End Get Set _header = value End Set End Property Public ReadOnly Property Employees() As ArrayList Get Return _employees End Get End Property ' Override the CreateChildControls method to ' add child controls to the Employees property when this ' custom control is requested from a page. Protected Overrides Sub CreateChildControls() Dim label As New Label() label.Text = Header label.BackColor = Color.Beige label.ForeColor = Color.Red Controls.Add(label) Controls.Add(New LiteralControl("<BR> <BR>")) Dim table As New Table() Dim htr As New TableRow() Dim hcell1 As New TableHeaderCell() hcell1.Text = "Name" htr.Cells.Add(hcell1) Dim hcell2 As New TableHeaderCell() hcell2.Text = "Title" htr.Cells.Add(hcell2) Dim hcell3 As New TableHeaderCell() hcell3.Text = "Alias" htr.Cells.Add(hcell3) table.Rows.Add(htr) table.BorderWidth = Unit.Pixel(2) table.BackColor = Color.Beige table.ForeColor = Color.Red Dim employee As Employee For Each employee In Employees Dim tr As New TableRow() Dim cell1 As New TableCell() cell1.Text = employee.Name tr.Cells.Add(cell1) Dim cell2 As New TableCell() cell2.Text = employee.Title tr.Cells.Add(cell2) Dim cell3 As New TableCell() cell3.Text = employee.Alias tr.Cells.Add(cell3) table.Rows.Add(tr) Next employee Controls.Add(table) End Sub 'CreateChildControls End Class 'CollectionPropertyControl
// Use the PersistChildren attribute to set the Persist // property to false so that none of this class's // child controls will be persisted as controls. They will // be persisted only as child elements of this class. // If you set the PersistChildren attribute to true, or if you // do not include this attribute when you create a control, // the child controls will be persisted as controls. [PersistChildren(false)] [AspNetHostingPermission(SecurityAction.Demand, Level=AspNetHostingPermissionLevel.Minimal)] public sealed class CollectionPropertyControl : Control { private String header; private ArrayList employees = new ArrayList(); public String Header { get { return header; } set { header = value; } } public ArrayList Employees { get { return employees; } } // Override the CreateChildControls method to // add child controls to the Employees property when this // custom control is requested from a page. protected override void CreateChildControls() { Label label = new Label(); label.Text = Header; label.BackColor = Color.Beige; label.ForeColor = Color.Red; Controls.Add(label); Controls.Add(new LiteralControl("<BR> <BR>")); Table table = new Table(); TableRow htr = new TableRow(); TableHeaderCell hcell1 = new TableHeaderCell(); hcell1.Text = "Name"; htr.Cells.Add(hcell1); TableHeaderCell hcell2 = new TableHeaderCell(); hcell2.Text = "Title"; htr.Cells.Add(hcell2); TableHeaderCell hcell3 = new TableHeaderCell(); hcell3.Text = "Alias"; htr.Cells.Add(hcell3); table.Rows.Add(htr); table.BorderWidth = 2; table.BackColor = Color.Beige; table.ForeColor = Color.Red; foreach (Employee employee in Employees) { TableRow tr = new TableRow(); TableCell cell1 = new TableCell(); cell1.Text = employee.Name; tr.Cells.Add(cell1); TableCell cell2 = new TableCell(); cell2.Text = employee.Title; tr.Cells.Add(cell2); TableCell cell3 = new TableCell(); cell3.Text = employee.Alias; tr.Cells.Add(cell3); table.Rows.Add(tr); } Controls.Add(table); } }

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 によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


PersistChildrenAttribute コンストラクタ (Boolean, Boolean)
アセンブリ: System.Web (system.web.dll 内)

Dim persist As Boolean Dim usesCustomPersistence As Boolean Dim instance As New PersistChildrenAttribute(persist, usesCustomPersistence)

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 によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


PersistChildrenAttribute コンストラクタ

名前 | 説明 |
---|---|
PersistChildrenAttribute (Boolean) | 入れ子になった内容を入れ子になったコントロールとして保持するかどうかを示すブール値を使用して、PersistChildrenAttribute クラスの新しいインスタンスを初期化します。 |
PersistChildrenAttribute (Boolean, Boolean) | 2 つのブール値を使用して PersistChildrenAttribute クラスの新しいインスタンスを初期化します。1 つ目のブール値は、入れ子になった内容を入れ子になったコントロールとして保持するかどうかを示し、2 つ目のブール値は、カスタム保持方法を使用するかどうかを示します。 |

PersistChildrenAttribute フィールド

名前 | 説明 | |
---|---|---|
![]() | Default | 既定の属性状態を示します。Default フィールドは読み取り専用です。 |
![]() | No | デザイン時に、入れ子になった内容を入れ子になったコントロールとして保持しないことを示します。このフィールドは読み取り専用です。 |
![]() | Yes | デザイン時に、入れ子になった内容をコントロールとして保持することを示します。Yes フィールドは読み取り専用です。 |

PersistChildrenAttribute プロパティ

名前 | 説明 | |
---|---|---|
![]() | Persist | デザイン時に、入れ子になった内容を入れ子になったコントロールとして保持するかどうかを示す値を取得します。 |
![]() | TypeId | 派生クラスに実装されている場合は、この Attribute の一意の識別子を取得します。 ( Attribute から継承されます。) |
![]() | UsesCustomPersistence | デザイン時に、サーバー コントロールが、入れ子になったコントロールをカスタマイズされた方法で保持するかどうかを示す値を取得します。 |

PersistChildrenAttribute メソッド

名前 | 説明 | |
---|---|---|
![]() | Equals | オーバーロードされます。 オーバーライドされます。 2 つのオブジェクトが等しいかどうかを判断します。 |
![]() | GetCustomAttribute | オーバーロードされます。 アセンブリ、モジュール、型のメンバ、またはメソッド パラメータに適用された指定した型のカスタム属性を取得します。 ( Attribute から継承されます。) |
![]() | GetCustomAttributes | オーバーロードされます。 アセンブリ、モジュール、型のメンバ、またはメソッド パラメータに適用されたカスタム属性の配列を取得します。 ( Attribute から継承されます。) |
![]() | GetHashCode | オーバーライドされます。 PersistChildrenAttribute クラスのハッシュ関数として機能します。 |
![]() | GetType | 現在のインスタンスの Type を取得します。 ( Object から継承されます。) |
![]() | IsDefaultAttribute | オーバーライドされます。 PersistChildrenAttribute クラスの現在のインスタンスの値を派生クラスの既定値にするかどうかを示す値を返します。 |
![]() | IsDefined | オーバーロードされます。 指定した型のカスタム属性が、アセンブリ、モジュール、型のメンバ、またはメソッド パラメータに適用されているかどうかを判断します。 ( Attribute から継承されます。) |
![]() | Match | 派生クラス内でオーバーライドされたときに、指定したオブジェクトとこのインスタンスが等しいかどうかを示す値を返します。 ( Attribute から継承されます。) |
![]() | ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 ( Object から継承されます。) |
![]() | ToString | 現在の Object を表す String を返します。 ( Object から継承されます。) |

名前 | 説明 | |
---|---|---|
![]() | Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 ( Object から継承されます。) |
![]() | MemberwiseClone | 現在の Object の簡易コピーを作成します。 ( Object から継承されます。) |

PersistChildrenAttribute メンバ
デザイン時に、サーバー コントロール内に含まれている入れ子になった内容がコントロールなのかサーバー コントロールのプロパティなのか示す、ASP.NET サーバー コントロールによって使用される属性を定義します。このクラスは継承できません。
PersistChildrenAttribute データ型で公開されるメンバを以下の表に示します。


名前 | 説明 | |
---|---|---|
![]() | Default | 既定の属性状態を示します。Default フィールドは読み取り専用です。 |
![]() | No | デザイン時に、入れ子になった内容を入れ子になったコントロールとして保持しないことを示します。このフィールドは読み取り専用です。 |
![]() | Yes | デザイン時に、入れ子になった内容をコントロールとして保持することを示します。Yes フィールドは読み取り専用です。 |

名前 | 説明 | |
---|---|---|
![]() | Persist | デザイン時に、入れ子になった内容を入れ子になったコントロールとして保持するかどうかを示す値を取得します。 |
![]() | TypeId | 派生クラスに実装されている場合は、この Attribute の一意の識別子を取得します。(Attribute から継承されます。) |
![]() | UsesCustomPersistence | デザイン時に、サーバー コントロールが、入れ子になったコントロールをカスタマイズされた方法で保持するかどうかを示す値を取得します。 |

名前 | 説明 | |
---|---|---|
![]() | Equals | オーバーロードされます。 オーバーライドされます。 2 つのオブジェクトが等しいかどうかを判断します。 |
![]() | GetCustomAttribute | オーバーロードされます。 アセンブリ、モジュール、型のメンバ、またはメソッド パラメータに適用された指定した型のカスタム属性を取得します。 (Attribute から継承されます。) |
![]() | GetCustomAttributes | オーバーロードされます。 アセンブリ、モジュール、型のメンバ、またはメソッド パラメータに適用されたカスタム属性の配列を取得します。 (Attribute から継承されます。) |
![]() | GetHashCode | オーバーライドされます。 PersistChildrenAttribute クラスのハッシュ関数として機能します。 |
![]() | GetType | 現在のインスタンスの Type を取得します。 (Object から継承されます。) |
![]() | IsDefaultAttribute | オーバーライドされます。 PersistChildrenAttribute クラスの現在のインスタンスの値を派生クラスの既定値にするかどうかを示す値を返します。 |
![]() | IsDefined | オーバーロードされます。 指定した型のカスタム属性が、アセンブリ、モジュール、型のメンバ、またはメソッド パラメータに適用されているかどうかを判断します。 (Attribute から継承されます。) |
![]() | Match | 派生クラス内でオーバーライドされたときに、指定したオブジェクトとこのインスタンスが等しいかどうかを示す値を返します。 (Attribute から継承されます。) |
![]() | ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 (Object から継承されます。) |
![]() | ToString | 現在の Object を表す String を返します。 (Object から継承されます。) |

名前 | 説明 | |
---|---|---|
![]() | Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。) |
![]() | MemberwiseClone | 現在の Object の簡易コピーを作成します。 (Object から継承されます。) |

- PersistChildrenAttributeのページへのリンク