¿Le resultó útil esta página?
Sus comentarios sobre este contenido son muy importantes. Háganos saber su opinión.
¿Tiene comentarios adicionales?
Caracteres restantes: 1500
Exportar (0) Imprimir
Expandir todo

Identificación de controles de formularios Web Forms

Actualización: noviembre 2007

Cada control de una página Web ASP.NET debe poder identificarse de una única manera. Normalmente, se asigna un valor a la propiedad ID de un control para darle una identificación única. Este valor se convierte en el nombre de instancia del control, es decir, el nombre por el que puede hacer referencia al control en el código. Por ejemplo, si define la propiedad ID de un control TextBox como Text1, puede hacer referencia al control en el código como Text1.

Varios controles enlazados a datos, incluidos los controles DataList, Repeater, GridView, FormView y DetailsView, actúan como contenedores para otros controles (secundarios). Cuando se ejecutan estos controles, generan varias instancias del control secundario. Por ejemplo, si crea una plantilla DataList que contenga un control Label, cuando se ejecute la página, habrá tantas instancias del control Label en la página como registros en el origen de datos del control DataList.

1d04y8ss.alert_note(es-es,VS.100).gifNota:

Los controles que utilizan plantillas, como los controles DataList y Repeater, alojan objetos de plantilla. Por ejemplo, cuando se ejecuta el control DataList, crea varias instancias de la clase DataListItem. Estos objetos de plantilla contienen a su vez controles individuales como etiquetas, texto, botones, etc.

Puesto que se pueden crear varias instancias de un control en la misma página y se pueden reutilizar los nombres de control en páginas diferentes, el marco de trabajo de páginas ASP.NET proporciona mecanismos para garantizar que los controles de la página y de la aplicación tienen identificadores únicos. También proporciona mecanismos para buscar esos controles individuales para poder manipularlos en el propio código.

Los controles que pueden actuar como contenedores de otros controles generan un contenedor de nomenclatura, o un espacio de nombres ID, para sus controles secundarios. Al proporcionar este contenedor de nomenclatura, los controles garantizan que los atributos ID de sus controles secundarios son únicos en toda la aplicación. (Los controles generan un contenedor de nomenclatura implementando la interfaz INamingContainer.) Cuando se crean controles secundarios en tiempo de ejecución, el contenedor de nomenclatura se combina con la propiedad ID del control secundario para crear el valor de la propiedad UniqueID de cada control secundario. La propiedad UniqueID, por tanto, se convierte en un identificador completo de un control, que hace referencia a su contenedor de nomenclatura así como al valor ID individual del control.

En el ejemplo anterior, las distintas instancias del control Label se crean en el contenedor de nomenclatura (el espacio de nombres) del control DataList primario. La propiedad UniqueID de cada control Label reflejará este espacio de nombres, que tendrá un formato parecido a DataList1:_ctl:MyLabel, DataList1:_ct2:MyLabel, etc.

1d04y8ss.alert_note(es-es,VS.100).gifNota:

No escriba código que haga referencia a los controles que utilizan el valor de la propiedad UniqueID generada. Puede tratar la propiedad UniqueID como un identificador (por ejemplo, pasándolo a un proceso), pero no debe basarse en que tenga una estructura específica.

Además de cada control contenedor que proporciona un contenedor de nomenclatura para sus controles secundarios, la página en sí proporciona también un contenedor de nomenclatura para todos sus controles secundarios. Esto crea un espacio de nombres único en la aplicación para todos los controles de esa página.

Los controles secundarios pueden hacer referencia a su contenedor de nomenclatura a través de la propiedad NamingContainer. Esta propiedad devuelve un objeto de tipo Control que puede convertir en el correspondiente control DataList, objeto DataListItem, etc.

Hacer referencia al contenedor de nomenclatura resulta útil cuando es necesario tener acceso desde un control secundario a una propiedad del control contenedor. Por ejemplo, en un controlador del evento DataBinding de un control secundario, puede tener acceso al objeto DataItem obteniéndolo desde el contenedor de nomenclatura.

1d04y8ss.alert_note(es-es,VS.100).gifNota:

La propiedad NamingContainer no hace referencia necesariamente al mismo control que la propiedad Parent. Por ejemplo, en un control Repeater, puede tener una plantilla de elemento que contenga una tabla que, a su vez, contenga un control Label. El control primario de la etiqueta es una celda de tabla (por ejemplo, un objeto HtmlTableCell), pero su contenedor de nomenclatura es el objeto DataListItem, porque es DataListItem quien define el espacio de nombres para el control Label y no la tabla.

Si la página contiene controles que se generan en tiempo de ejecución, como los de una plantilla para los controles DataList, Repeater o GridView, no puede hacer referencia directamente a ellos por su identificador (ID), porque el identificador no es único. Sin embargo, hay varias maneras de buscar controles individuales en la páginas. Para obtener información detallada, vea Obtener acceso a controles ASP.NET mediante programación.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2015 Microsoft