Lire en anglais

Partager via


PersistChildrenAttribute Classe

Définition

Définit un attribut utilisé par les contrôles serveur ASP.NET pour indiquer, au moment du design, si un contenu intégré à un contrôle serveur correspond à des contrôles ou à des propriétés du contrôle serveur. Cette classe ne peut pas être héritée.

C#
[System.AttributeUsage(System.AttributeTargets.Class)]
public sealed class PersistChildrenAttribute : Attribute
Héritage
PersistChildrenAttribute
Attributs

Exemples

L’exemple de code de cette section contient deux parties. Le premier exemple de code montre comment définir les métadonnées d’un contrôle personnalisé afin qu’au moment de la conception, son contenu imbriqué soit conservé en tant que propriétés du contrôle. Le deuxième exemple de code montre comment utiliser des classes dans une page ASP.NET.

L’exemple de code suivant montre comment appliquer l’attribut PersistChildrenAttribute afin qu’aucun des contrôles imbriqués d’un contrôle serveur personnalisé ne soit conservé en tant que contrôles imbriqués. L’attribut du contrôle serveur personnalisé nommé CollectionPropertyControl est défini sur false afin que les Employee objets ajoutés soient conservés en tant qu’éléments PersistChildrenAttribute imbriqués.

C#
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);
      }
   }
}

L’exemple de code suivant montre comment utiliser les CollectionPropertyControl classes et dans Employee une page ASP.NET.

ASP.NET (C#)
<%@ 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 xmlns="http://www.w3.org/1999/xhtml" >
<head 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>

Remarques

Le PersistChildrenAttribute est utilisé en combinaison avec le ParseChildrenAttribute pour déterminer la façon dont le contenu imbriqué d’un contrôle est interprété. Si PersistChildrenAttribute a la valeur true et ParseChildrenAttribute est false, le contenu imbriqué contenu dans un contrôle serveur ASP.NET est conservé en tant que contrôles. Si PersistChildrenAttribute a la valeur false et ParseChildrenAttribute est true, le contenu imbriqué est conservé en tant que propriétés du contrôle serveur. Pour plus d’informations sur l’utilisation des attributs, consultez Attributs.

Constructeurs

PersistChildrenAttribute(Boolean)

Initialise une nouvelle instance de la classe PersistChildrenAttribute à l'aide d'une valeur Boolean qui indique s'il faut ou non rendre le contenu imbriqué persistant sous forme de contrôles imbriqués.

PersistChildrenAttribute(Boolean, Boolean)

Initialise une nouvelle instance de la classe PersistChildrenAttribute en utilisant deux valeurs Boolean. L'une indique s'il faut ou non rendre le contenu imbriqué persistant sous forme de contrôles imbriqués, l'autre s'il faut ou non utiliser une méthode de persistance personnalisée.

Champs

Default

Indique l'état de l'attribut par défaut. Le champ Default est en lecture seule.

No

Indique que le contenu imbriqué ne doit pas persistant sous forme de contrôles imbriqués au moment du design. Ce champ est en lecture seule.

Yes

Indique que le contenu imbriqué doit être persistant sous forme de contrôles au moment du design. Le champ Yes est en lecture seule.

Propriétés

Persist

Obtient une valeur qui indique si le contenu imbriqué est persistant sous forme de contrôles imbriqués au moment du design.

TypeId

Lors de l'implémentation dans une classe dérivée, obtient un identificateur unique pour l'objet Attribute.

(Hérité de Attribute)
UsesCustomPersistence

Obtient une valeur qui indique si le contrôle serveur fournit une persistance personnalisée de contrôles imbriqués au moment du design.

Méthodes

Equals(Object)

Détermine si l'objet spécifié est égal à l'objet actuel.

GetHashCode()

Sert de fonction de hachage pour la classe PersistChildrenAttribute.

GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
IsDefaultAttribute()

Retourne une valeur qui indique si la valeur de l'instance actuelle de la classe PersistChildrenAttribute constitue la valeur par défaut de la classe dérivée.

Match(Object)

En cas de substitution dans une classe dérivée, retourne une valeur indiquant si cette instance équivaut à un objet spécifié.

(Hérité de Attribute)
MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
ToString()

Retourne une chaîne qui représente l'objet actuel.

(Hérité de Object)

Implémentations d’interfaces explicites

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Mappe un jeu de noms avec un jeu correspondant d'identificateurs de dispatch.

(Hérité de Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Récupère les informations de type pour un objet, qui peuvent être utilisées pour obtenir les informations de type d'une interface.

(Hérité de Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Récupère le nombre d'interfaces d'informations de type fourni par un objet (0 ou 1).

(Hérité de Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fournit l'accès aux propriétés et aux méthodes exposées par un objet.

(Hérité de Attribute)

S’applique à

Produit Versions
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1

Voir aussi