Controles y accesibilidad en ASP.NET

Actualización: noviembre 2007

ASP.NET permite crear páginas web que cumplen con los consejos para la accesibilidad. Para obtener información detallada, vea Compatibilidad de accesibilidad en ASP.NET.

Para crear aplicaciones Web accesibles en ASP.NET, debe conocer cómo posibilitan la accesibilidad los controles de servidor de ASP.NET. En muchos casos, deberá configurar un control para crear marcado con arreglo a los consejos para la accesibilidad. En contadas ocasiones, no es posible utilizar los controles de servidor de ASP.NET en aplicaciones que deben ajustarse al 100% a los consejos de prioridad 1 en el contexto de las directrices Web Content Accessibility Guidelines 1.0 (WCAG). En esos casos, debe evitar el uso de los controles.

Consejos de uso de controles en ASP.NET para la accesibilidad

En la siguiente tabla se enumeran controles de servidor de ASP.NET y se proporciona información sobre la compatibilidad con la accesibilidad de cada control. Si un control no aparece enumerado en la tabla, significa que su resultado se ajusta a los consejos para la accesibilidad sin ningún requisito de configuración.

Control

Compatibilidad para la accesibilidad

AppearanceEditorPart

El control no genera elementos label para asociar etiquetas a controles.

Todos los verbos generan el mismo texto de vínculo.

El texto alternativo de los vínculos se puede representar pero no personalizarse.

El control requiere script de cliente para funcionar.

El control no representa valores de tecla de acceso ni de índice de tabulación.

BehaviorEditorPart

El control no genera elementos label para asociar etiquetas a controles.

Todos los verbos generan el mismo texto de vínculo.

El texto alternativo de los vínculos se puede representar pero no personalizarse.

El control requiere script de cliente para funcionar.

El control no representa valores de tecla de acceso ni de índice de tabulación.

BulletedList

Si la propiedad DisplayMode del control se establece como LinkButton, el control requiere script de cliente para funcionar. Para evitar la necesidad de script de cliente, cree plantillas y agregue controles Button para estas funciones.

Cuando se establezca la propiedad BulletStyle del control como CustomImage, asegúrese de que el gráfico no tiene ningún significado que no vaya a estar disponible para los usuarios que no pueden verlo.

Al establecer la propiedad Target para los vínculos se abre una ventana nueva, lo que no se recomienda en ningún consejo para la accesibilidad.

Button

Cuando se establece la propiedad OnClientClick, el botón depende del script de cliente.

Calendar

El control no representa un objeto header en columnas, pero sí representa los elementos th con scope para el encabezado.

El diseño del control se representa con una tabla HTML, algo que no recomiendan algunas directrices. Establezca las propiedades Caption y CaptionAlign del control con el fin de que se represente un título para la tabla, según se recomienda en los consejos para la accesibilidad.

El control representa los controles LinkButton para la navegación, lo que requiere script de cliente. Para evitar la necesidad de script de cliente, cree plantillas y agregue controles Button para estas funciones.

CatalogZone

El control no genera elementos label para asociar etiquetas a controles.

Todos los verbos generan el mismo texto de vínculo.

El texto alternativo de los vínculos puede representarse pero no personalizarse.

El control requiere script de cliente para funcionar.

El control no representa valores de tecla de acceso ni de índice de tabulación.

ChangePassword

El control requiere script de cliente para funcionar.

Si configura el control para que utilice imágenes, establezca la propiedad de texto correspondiente con el texto alternativo adecuado. Por ejemplo, si establece la propiedad ChangePasswordButtonType como Image, establezca la propiedad ChangePasswordButtonText como texto alternativo.

CheckBox

Al establecer la propiedad AutoPostBack en true el control requiere script de cliente.

CheckBoxList

Al establecer la propiedad AutoPostBack en true el control requiere script de cliente.

CreateUserWizard

Si configura el control para el uso de imágenes, establezca la propiedad de texto correspondiente con texto alternativo adecuado. Por ejemplo, si establece la propiedad CancelButtonType como Image, establezca la propiedad CancelButtonText como texto alternativo.

Los botones del control, como Enviar, y los vínculos para ir de un paso a otro requieren script de cliente.

DataPager

Si no se establece la propiedad QueryStringField y está utilizando objetos NextPreviousPagerField o NumericPagerField, el control DataPager requiere el script de cliente. Si los objetos del campo de localizador (pager) se configuran para usar imágenes, no puede especificar de forma explícita texto alternativo para las imágenes. Las imágenes usan las propiedades de texto (como NextPageText) como texto alternativo. A modo de alternativa, use el objeto TemplatePagerField para que pueda definir exactamente lo que muestra el localizador.

DetailsView

Si crea una columna ButtonField y especifica una imagen para el botón, no puede especificar explícitamente texto alternativo para la imagen. La imagen utiliza la propiedad Text del objeto como texto alternativo.

El diseño de control se representa con una tabla HTML, algo que no recomiendan algunas directrices porque no se incluye información de encabezado de tabla.

Si habilita la paginación y establece las propiedades NextPageImageUrl y PreviousPageImageUrl, no podrá establecer explícitamente el texto alternativo para las imágenes utilizadas como botones de paginación. En su lugar, utilice la propiedad PagerTemplate para poder definir exactamente qué muestra el localizador.

De forma predeterminada, este control utiliza controles LinkButton, que requieren script de cliente para funciones tales como cambiar al modo de edición, paginar, etc. Para evitar la necesidad de script de cliente, cree plantillas y agregue controles Button para estas funciones.

Los cuadros de texto que se generan automáticamente cuando se establece la propiedad AutoGenerateEditButton del control en true no tienen ningún elemento label asociado. Para evitar esto, cree campos de plantilla, agregue sus propios controles Label y TextBox y asócielos manualmente. Establezca las propiedades Caption y CaptionAlign del control con el fin de que se represente un título para la tabla, según se recomienda en los consejos para la accesibilidad.

DropDownList

El control no admite el objeto ListItemGroup recomendado para permitir que la lista se subdivida en secciones.

Al establecer la propiedad AutoPostBack en true el control requiere script de cliente.

EditorZone

Todos los verbos muestran el mismo texto alternativo cuando se muestran los iconos.

El control requiere script de cliente para funcionar.

El control no representa valores de tecla de acceso ni de índice de tabulación.

El control no genera elementos label para asociar etiquetas a controles.

El texto alternativo para los vínculos puede representarse pero no personalizarse.

FormView

El diseño de control se representa con una tabla HTML, algo que no recomiendan algunas directrices porque no se incluye información de encabezado de tabla.

De forma predeterminada, el control utiliza controles LinkButton, que requieren script de cliente para funciones tales como cambiar al modo de edición, paginar, etc. Para evitar la necesidad del script del cliente, utilice la propiedad PagerTemplate y agregue controles Button para estas funciones.

Establezca las propiedades Caption y CaptionAlign del control con el fin de que se represente un título para la tabla, según se recomienda en los consejos para la accesibilidad.

GridView

Establezca la propiedad RowHeaderColumn como nombre de un campo de datos y la propiedad UseAccessibleHeader en true para que el control represente la información de encabezado de tabla que se ajuste a los consejos para la accesibilidad.

Si crea un objeto ButtonField y especifica una imagen para el botón, no puede especificar explícitamente texto alternativo para la imagen. La imagen utiliza la propiedad Text del objeto como texto alternativo.

Establezca las propiedades Caption y CaptionAlign del control con el fin de que se represente un título para la tabla, según se recomienda en los consejos para la accesibilidad.

De forma predeterminada, el control utiliza controles LinkButton, que requieren script de cliente para funciones tales como cambiar al modo de edición, paginar, etc. Para evitar la necesidad de script de cliente, cree plantillas y agregue controles Button para estas funciones.

Si habilita la paginación y establece las propiedades NextPageImageUrl y PreviousPageImageUrl, no podrá establecer explícitamente el texto alternativo para las imágenes utilizadas como botones de paginación. En su lugar, utilice la propiedad PagerTemplate para poder definir exactamente qué muestra el localizador.

Los controles predeterminados utilizados para implementar la edición, selección, paginación y otras funciones de actualización requieren script de cliente. Para evitar esto, cree columnas de plantilla y agregue manualmente los controles Button.

Los cuadros de texto que se generan automáticamente cuando se establece la propiedad AutoGenerateEditButton del control en true no tienen ningún elemento label asociado. Para evitar esto, cree columnas de plantilla, agregue sus propios controles Label y TextBox y asócielos manualmente.

Si habilita la ordenación, los vínculos de los encabezados de columna son controles LinkButton y necesitan script de cliente. Para evitar la necesidad de script de cliente, cree plantillas y agregue controles Button para estas funciones.

HyperLink

Si establece la propiedad ImageUrl como la dirección URL de un archivo gráfico, establezca la propiedad Text de modo que especifique el texto alternativo para el gráfico resultante.

Al establecer la propiedad Target para los vínculos se abre una ventana nueva, lo que no se recomienda en ningún consejo para la accesibilidad.

Image

De forma predeterminada, el control no representa texto alternativo. Establezca la propiedad AlternateText. Si el gráfico no tiene ningún propósito funcional, establezca la propiedad GenerateEmptyAlternateText como true para representar alt como una cadena vacía (""), lo que provocará que los lectores de pantalla pasen por alto el gráfico.

ImageButton

El control requiere script de cliente para funcionar.

De forma predeterminada, el control no representa texto alternativo. Establezca la propiedad AlternateText.

No utilice el control ImageButton como un mapa de imágenes, porque no admite regiones con su propio texto alternativo. En su lugar, utilice el control ImageMap.

ImageMap

De forma predeterminada, el control no representa texto alternativo. Establezca la propiedad AlternateText.

Si establece la propiedad HotSpotMode del control o de zonas activas individuales como PostBack, el control necesita script de cliente para funcionar.

Al establecer la propiedad Target para los vínculos se abre una ventana nueva, lo que no se recomienda en ningún consejo para la accesibilidad.

Label

Para utilizar el control con el fin de representar un objeto label para un cuadro de texto u otro control, establezca la propiedad AssociatedControlID con el identificador del control que se va a asociar a la etiqueta.

LayoutEditorPart

Incluya siempre el control LayoutEditorPart con otros controles de elementos Web para hacer una página accesible. De lo contrario, los usuarios sólo pueden utilizar un mouse para arrastrar controles de elementos Web.

El control no genera elementos label para asociar etiquetas a controles.

Todos los verbos generan el mismo texto de vínculo.

El texto alternativo de los vínculos se puede representar pero no personalizarse.

El control requiere script de cliente para funcionar.

El control no representa valores de tecla de acceso ni de índice de tabulación.

LinkButton

El control requiere script de cliente para funcionar.

No establezca la propiedad Text de varios controles LinkButton con la misma cadena, dado que los usuarios que dependen de lectores de pantalla no podrán distinguir los botones.

ListBox

El control no admite el objeto ListItemGroup recomendado para permitir que la lista se subdivida en secciones.

Al establecer la propiedad AutoPostBack en true el control requiere script de cliente.

Login

Cuando la propiedad LoginButtonType se establece como Image, el valor de la propiedad LoginButtonText se utiliza como el texto alternativo.

El control no representa valores de tecla de acceso ni de índice de tabulación.

LoginName

Establezca la propiedad ToolTip con texto como Sesión iniciada con el nombre de usuario para que los lectores de pantalla interpreten correctamente el texto del control.

LoginStatus

El control utiliza un control LinkButton para mostrar el vínculo Cerrar sesión y, por consiguiente, necesita script de cliente. Para evitar la necesidad de script de cliente, cree plantillas y agregue controles Button para estas funciones.

Menu

Establezca la propiedad SkipLinkText del control como una cadena para que el control represente el vínculo de omitir navegación recomendado.

El control requiere script de cliente para funcionar.

En exploradores que no admiten la funcionalidad completa de cliente del control, el explorador actualizará la ventana para mostrar la navegación secundaria, lo que para un lector de pantalla podría suponer empezar a leer la página de nuevo.

Al establecer la propiedad Target para los vínculos se abre una ventana nueva, lo que no se recomienda en ningún consejo para la accesibilidad.

El diseño del control se representa con una tabla HTML, algo que no recomiendan algunas directrices.

Los consejos para la accesibilidad no recomiendan que se configure el control de modo que tenga efectos secundarios relacionados con el puntero del mouse (por ejemplo, la creación de menús de acceso directo).

PageCatalogPart

El control no genera elementos label para asociar etiquetas a controles.

Todos los verbos generan el mismo texto de vínculo.

El texto alternativo de los vínculos se puede representar pero no personalizarse.

El control requiere script de cliente para funcionar.

El control no representa valores de tecla de acceso ni de índice de tabulación.

PasswordRecovery

Si la propiedad ClientTarget de la página se establece como Downlevel, el control necesita script de cliente para funcionar.

Cuando la propiedad SubmitButtonType se establece como Image, el valor de la propiedad SubmitButtonText se utiliza como el texto alternativo.

El control no representa valores de tecla de acceso ni de índice de tabulación.

PropertyGridEditorPart

El control no genera elementos label para asociar etiquetas a controles.

Todos los verbos generan el mismo texto de vínculo.

El texto alternativo de los vínculos se puede representar pero no personalizarse.

El control requiere script de cliente para funcionar.

El control no representa valores de tecla de acceso ni de índice de tabulación.

RadioButton

Al establecer la propiedad AutoPostBack en true el control requiere script de cliente.

RadioButtonList

Al establecer la propiedad AutoPostBack en true el control requiere script de cliente.

SiteMapPath

Establezca la propiedad SkipLinkText del control como una cadena para que el control represente el vínculo de omitir navegación recomendado.

En el archivo XML del mapa del sitio, establezca el atributo description de cada nodo del mapa del sitio con el fin de proporcionar un título que puedan utilizar los lectores de pantalla para identificar vínculos de navegación.

Table, TableRow, TableCell, TableHeaderCell, TableHeaderRow y TableFooterRow

Establezca las propiedades Caption y CaptionAlign del control con el fin de que se represente un título para la tabla, según se recomienda en los consejos para la accesibilidad.

Al crear un objeto Table, incluya los controles TableHeaderRow y TableHeaderCell.

En los controles TableHeaderRow, Table y TableFooterRow, establezca la propiedad TableSection como TableBody, TableHeader o TableFooter. De ese modo, el control representará los elementos thead, tbody ytfoot, respectivamente.

En los controles TableCell, establezca la propiedad AssociatedHeaderCellID de manera que el control represente un objeto header que asocie la celda a su encabezado.

Establezca la propiedad Scope del control para que se asocie el encabezado a la columna de datos correspondiente.

TextBox

Al establecer la propiedad AutoPostBack en true el control requiere script de cliente.

TreeView

Establezca la propiedad SkipLinkText del control como una cadena para que el control represente el vínculo de omitir navegación recomendado.

El establecimiento de la propiedad PopulateOnDemand de un nodo en true hace que el control se comporte de forma no compatible con los consejos para la accesibilidad.

El control requiere script de cliente para funcionar.

Si se establece la propiedad Target como _blank para el control TreeView o para nodos individuales, el control abrirá una nueva ventana, lo que no se recomienda en los consejos para la accesibilidad.

WebPartZone

El control no genera elementos label para asociar etiquetas a controles.

Todos los verbos generan el mismo texto de vínculo.

El texto alternativo de los vínculos se puede representar pero no personalizarse.

El control requiere script de cliente para funcionar.

El control no representa valores de tecla de acceso ni de índice de tabulación.

Si establece la propiedad HelpMode como Modal o Modeless, el control abre una nueva ventana, algo que no se recomienda en los consejos para la accesibilidad.

Wizard

El control representa los controles LinkButton para la navegación, lo que requiere script de cliente. Para evitar la necesidad de script de cliente, cree plantillas y agregue controles Button para estas funciones.

Controles validadores

De forma predeterminada, los controles de validación representan script de cliente para realizar la validación en el cliente. Sin embargo, dado que los controles validadores integrados (excepto el control CustomValidator) realizan automáticamente una comprobación de validación redundante en código de servidor, puede establecer la propiedad EnableClientScript en false con objeto de evitar que se representen script de cliente para los controles de validación.

Establezca las propiedades Text y ErrorMessage con mensajes de error significativos. No las establezca con un asterisco (*).

Vea también

Conceptos

Compatibilidad de accesibilidad en ASP.NET