Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Clase PersistChildrenAttribute

 

Publicado: octubre de 2016

Define un atributo que se usa por los controles de servidor ASP.NET para indicar en tiempo de diseño si el contenido anidado que está dentro de un control de servidor corresponde a los controles o a las propiedades del control de servidor. Esta clase no puede heredarse.

Espacio de nombres:   System.Web.UI
Ensamblado:  System.Web (en System.Web.dll)

System.Object
  System.Attribute
    System.Web.UI.PersistChildrenAttribute

[AttributeUsageAttribute(AttributeTargets.Class)]
public sealed class PersistChildrenAttribute : Attribute

NombreDescripción
System_CAPS_pubmethodPersistChildrenAttribute(Boolean)

Inicializa una nueva instancia de la PersistChildrenAttribute clase utilizando un valor booleano que indica si se conserva el contenido anidado como controles anidados.

System_CAPS_pubmethodPersistChildrenAttribute(Boolean, Boolean)

Inicializa una nueva instancia de la PersistChildrenAttribute clase utilizando dos valores booleanos. Uno que indica si se conserva el contenido anidado como controles anidados y otro que indica si se utiliza un método de persistencia personalizado.

NombreDescripción
System_CAPS_pubpropertyPersist

Obtiene un valor que indica si se conserva el contenido anidado como controles anidados en tiempo de diseño.

System_CAPS_pubpropertyTypeId

Cuando se implementa en una clase derivada, obtiene un identificador único para este Attribute.(Heredado de Attribute).

System_CAPS_pubpropertyUsesCustomPersistence

Obtiene un valor que indica si el control de servidor proporciona persistencia personalizada de controles anidados en tiempo de diseño.

NombreDescripción
System_CAPS_pubmethodEquals(Object)

Determina si el objeto especificado es igual al objeto actual.(Invalida Attribute.Equals(Object)).

System_CAPS_pubmethodGetHashCode()

Sirve como función hash para el PersistChildrenAttribute clase.(Invalida Attribute.GetHashCode()).

System_CAPS_pubmethodGetType()

Obtiene el Type de la instancia actual.(Heredado de Object).

System_CAPS_pubmethodIsDefaultAttribute()

Devuelve un valor que indica si el valor de la instancia actual de la PersistChildrenAttribute clase es el valor predeterminado de la clase derivada.(Invalida Attribute.IsDefaultAttribute()).

System_CAPS_pubmethodMatch(Object)

Cuando se invalida en una clase derivada, devuelve un valor que indica si esta instancia es igual al objeto especificado. (Heredado de Attribute).

System_CAPS_pubmethodToString()

Devuelve una cadena que representa al objeto actual. (Heredado de Object).

NombreDescripción
System_CAPS_pubfieldSystem_CAPS_staticDefault

Indica el estado de atributo predeterminado. El Default campo es de solo lectura.

System_CAPS_pubfieldSystem_CAPS_staticNo

Indica que el contenido anidado no debería conservarse como controles anidados en tiempo de diseño. Este campo es de solo lectura.

System_CAPS_pubfieldSystem_CAPS_staticYes

Indica que el contenido anidado debería conservarse como controles en tiempo de diseño. El Yes campo es de solo lectura.

NombreDescripción
System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Asigna un conjunto de nombres a un conjunto correspondiente de identificadores de envío.(Heredado de Attribute).

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Obtiene la información del tipo de un objeto, que puede utilizarse para obtener la información del tipo de una interfaz. (Heredado de Attribute).

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetTypeInfoCount(UInt32)

Recupera el número de interfaces de tipo de información que suministra un objeto (0 ó 1)

(Heredado de Attribute).

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Proporciona acceso a las propiedades y los métodos expuestos por un objeto.(Heredado de Attribute).

El PersistChildrenAttribute se utiliza en combinación con el ParseChildrenAttribute se interpreta determinar cómo anidado contenido de un control. Si PersistChildrenAttribute es true y ParseChildrenAttribute es false, el contenido anidado contenido dentro de un control de servidor ASP.NET se conserva como controles. Si PersistChildrenAttribute es false y ParseChildrenAttribute es true, el contenido anidado se conserva como propiedades del control de servidor. Para obtener más información sobre el uso de atributos, vea Extender metadatos mediante atributos.

El ejemplo de código en esta sección contiene dos partes. El primer ejemplo de código muestra cómo establecer los metadatos de un control personalizado para que en tiempo de diseño, su contenido anidado se conserva como propiedades del control. El segundo ejemplo de código muestra cómo utilizar las clases en una página ASP.NET.

En el ejemplo de código siguiente se muestra cómo aplicar el PersistChildrenAttribute de atributo para que ninguno de los controles anidados de un control de servidor personalizado se conservan como controles anidados. El control de servidor personalizado denominado CollectionPropertyControl tiene la PersistChildrenAttribute atributo establecido en false para que la Employee se conservan los objetos que se agregan como elementos anidados.

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);

      }
   }
}

En el ejemplo de código siguiente se muestra cómo utilizar el CollectionPropertyControl y Employee clases en una página ASP.NET.

<%@ 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>

.NET Framework
Disponible desde 1.1

Cualquier miembro ( Compartido en Visual Basic) estático público de este tipo es seguro para subprocesos. No se garantiza que los miembros de instancia sean seguros para subprocesos.

Volver al principio
Mostrar: