ParseChildrenAttribute Clase
TOC
Collapse the table of content
Expand the table of content
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

ParseChildrenAttribute (Clase)

Define un atributo de metadatos que se puede utilizar cuando se programan controles de servidor ASP.NET. Utilice la clase ParseChildrenAttribute para indicar cómo el analizador de la página debería tratar el contenido anidado dentro de una etiqueta de control de servidor declarada en una página. Esta clase no puede heredarse.

System.Object
  System.Attribute
    System.Web.UI.ParseChildrenAttribute

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

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

El tipo ParseChildrenAttribute expone los siguientes miembros.

  NombreDescripción
Método públicoParseChildrenAttribute()Inicializa una nueva instancia de la clase ParseChildrenAttribute.
Método públicoParseChildrenAttribute(Boolean)Inicializa una nueva instancia de la clase ParseChildrenAttribute utilizando la propiedad ChildrenAsProperties para determinar si se analizan los elementos contenidos dentro de un control de servidor como propiedades del control de servidor.
Método públicoParseChildrenAttribute(Type)Inicializa una nueva instancia de la clase ParseChildrenAttribute utilizando la propiedad ChildControlType para determinar qué elementos contenidos dentro de un control de servidor se analizan como controles.
Método públicoParseChildrenAttribute(Boolean, String)Inicializa una nueva instancia de la clase ParseChildrenAttribute con los parámetros childrenAsProperties y defaultProperty.
Arriba

  NombreDescripción
Propiedad públicaChildControlTypeObtiene un valor que indica el tipo permitido de un control.
Propiedad públicaChildrenAsPropertiesObtiene o establece un valor que indica si se analizan como propiedades los elementos contenidos dentro de un control de servidor.
Propiedad públicaDefaultPropertyObtiene o establece la propiedad predeterminada del control de servidor en el que se analizan los elementos.
Propiedad públicaTypeIdCuando se implementa en una clase derivada, obtiene un identificador único para este Attribute. (Se hereda de Attribute).
Arriba

  NombreDescripción
Método públicoEqualsDetermina si el objeto especificado es igual al objeto actual. (Invalida a Attribute.Equals(Object)).
Método públicoGetHashCodeSirve como función hash para el objeto ParseChildrenAttribute. (Invalida a Attribute.GetHashCode()).
Método públicoGetType Obtiene el Type de la instancia actual. (Se hereda de Object).
Método públicoIsDefaultAttributeDevuelve un valor que indica si el valor de la instancia actual de la clase ParseChildrenAttribute es el valor predeterminado de la clase derivada. (Invalida a Attribute.IsDefaultAttribute()).
Método públicoMatch Cuando se invalida en una clase derivada, devuelve un valor que indica si esta instancia es igual al objeto especificado. (Se hereda de Attribute).
Método públicoToString Retorna una cadena que representa al objeto actual. (Se hereda de Object).
Arriba

  NombreDescripción
Campo públicoMiembro estáticoDefaultDefine el valor predeterminado de la clase ParseChildrenAttribute. Este campo es de sólo lectura.
Campo públicoMiembro estáticoParseAsChildrenIndica que el contenido anidado contenido dentro del control de servidor se analiza como controles.
Campo públicoMiembro estáticoParseAsPropertiesIndica que el contenido anidado contenido dentro de un control de servidor se analiza como propiedades del control.
Arriba

  NombreDescripción
Implementación explícita de interfacesMétodo privado_Attribute.GetIDsOfNamesAsigna un conjunto de nombres a un conjunto correspondiente de identificadores de envío. (Se hereda de Attribute).
Implementación explícita de interfacesMétodo privado_Attribute.GetTypeInfo Obtiene la información del tipo de un objeto, que puede utilizarse para obtener la información del tipo de una interfaz. (Se hereda de Attribute).
Implementación explícita de interfacesMétodo privado_Attribute.GetTypeInfoCount

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

(Se hereda de Attribute).
Implementación explícita de interfacesMétodo privado_Attribute.InvokeProporciona acceso a las propiedades y los métodos expuestos por un objeto. (Se hereda de Attribute).
Arriba

La clase ParseChildrenAttribute le permite especificar la lógica de análisis para un control de servidor personalizado marcando el control de servidor con el atributo de metadatos ParseChildrenAttribute.

Al marcar el control de servidor con el atributo de metadatos ParseChildren(true), se indica al analizador que interprete como propiedades los elementos contenidos dentro de las etiquetas del control de servidor. En este escenario, la propiedad ChildrenAsProperties es true.

Al marcar el control de servidor con el atributo de metadatos ParseChildren(true,"<Default Property>"), se establece la propiedad DefaultProperty en el nombre de la propiedad pasada al atributo.

Al marcar el control de servidor con el atributo de metadatos ParseChildren(false), que es el valor predeterminado, se indica al analizador que interprete los elementos contenidos dentro de las etiquetas del control de servidor como contenido que se analizará con un objetoControlBuilder asociado, es decir, como controles. En este escenario, la propiedad ChildrenAsProperties es false.

Para obtener información sobre cómo utilizar los 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 la forma de establecer las propiedades para la clase ParseChildrenAttribute. El segundo código de ejemplo muestra cómo utilizar las clases en una página ASP.NET.

En el ejemplo de código siguiente se muestra la forma de establecer el objeto ParseChildrenAttribute de un control de servidor personalizado denominado CollectionPropertyControl. El objeto ParseChildrenAttribute establece la propiedad ChildrenAsProperties en true y la propiedad DefaultProperty a la clase Employee.


using System;
using System.Collections;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Security.Permissions;

namespace Samples.AspNet.CS.Controls
{
   // 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 ParseChildren attribute to set the ChildrenAsProperties
   // and DefaultProperty properties. Using this constructor, the
   // control parses all child controls as properties and must define
   // a public property named Employees, which it declares as
   // an ArrayList. Nested (child) elements must correspond to
   // child elements of the Employees property or to other
   // properties of the control.  
   [ParseChildren(true, "Employees")]
   [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 = System.Drawing.Color.Beige;
         label.ForeColor = System.Drawing.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 = System.Drawing.Color.Beige;
         table.ForeColor = System.Drawing.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 siguiente ejemplo de código se muestra cómo usar las clases CollectionPropertyControl y Employee en una página ASP.NET. Se agregan instancias de la clase Employee mediante declaración.


<%@ Page Language="C#" Debug="true" %>
<%@ Register TagPrefix="AspSample" Assembly="Samples.AspNet.CS.Controls" Namespace="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)
  {

    // Verify attribute values.
    ParseChildrenAttribute p = 
      (ParseChildrenAttribute)Attribute.GetCustomAttribute(typeof(CollectionPropertyControl),
      typeof(ParseChildrenAttribute));

    StringBuilder sb = new StringBuilder();
    sb.Append("The DefaultProperty property is " + p.DefaultProperty.ToString() + "<br />");
    sb.Append("The ChildrenAsProperties property is " + p.ChildrenAsProperties.ToString() + "<br />");
    sb.Append("The IsDefaultAttribute method returns " + p.IsDefaultAttribute().ToString());
    Message.Text = sb.ToString();

  }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>ParseChildrenAttribute Example</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <asp:Label ID="Message"
                 runat="server"/>
      <AspSample:CollectionPropertyControl id="CollectionPropertyControl1" 
                                           runat="server">
        <AspSample:Employee Name="Employee 1" 
                            Title="Title 1" 
                            Alias="Alias 1" />
        <AspSample:Employee Name="Employee 2" 
                            Title="Title 2" 
                            Alias="Alias 2" />
      </AspSample:CollectionPropertyControl>    
    </div>
    </form>
</body>
</html>


.NET Framework

Compatible con: 4.6, 4.5, 4, 3.5, 3.0, 2.0, 1.1

Windows 8,1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no es compatible con todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, consulte Requisitos de sistema de .NET Framework.

Todos los miembros públicos de static (Shared en Visual Basic) de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2016 Microsoft