ASP.NET 允许你创建符合可访问指南的 Web 页面。关于详细内容,参考[ASP.NET 的可访问支持]。

要在 ASP.NET 中创建可访问 Web 应用程序,你必须理解 ASP.NET 服务器控件是如何支持可访问的。在多数情况下,你必须配置控件或者创建符合可访问指南的标记。在少数情况下,ASP.NET 服务器控件不可以在必须百分之百符合 Web Content Accessibility Guidelines 1.0(WCAG)优先级 1 的应用程序中使用。在这种情况下,你必须避免使用控件。

ASP.NET 控件的可访问指南

下表列出了 ASP.NET 服务器控件和这些控件所提供的可访问支持的信息。如果控件没有在在该表中被列出,说明它的输出符合可访问指南,并且不需要任何配置。

控件 可访问支持
AppearanceEditorPart 该控件不生成与其相关联的 label 元素。

所有动作都生成相同的链接文字。

链接的替代文字被呈现,但不能够自定义。

该控件需要客户端脚本来运行。

该控件不呈现访问键或者制表索引设置。

BehaviorEditorPart 该控件不生成与其相关联的 label 元素。

所有动作都生成相同的链接文字。

链接的替代文字被呈现,但不能够自定义。

该控件需要客户端脚本来运行。

该控件不呈现访问键或者制表索引设置。

BulletedList 如果该控件的 DisplayMode 属性设置成 LinkButton,该控件就需要客户端脚本来运行。要避免客户端脚本的使用,可以创建模板并且为这些功能添加 Button 控件。

当控件的 BulletStyle 属性设置成 CustomImage 的时候,确保图片没有传达对于不能查看图片的用户不可用的意义。

设置链接的 Target 属性打开一个新窗口,这不是被可访问指南所建议的。

Button 设置 OnClientClick 属性导致按钮依赖于客户端脚本。
Calendar 该控件不呈现列中的 header,但是以一个 scope 来为标题呈现 th 元素。

该控件使用一个 HTML 表格来呈现布局,这不是被一些指南所建议的。设置该控件的 Caption 和 CaptionAlign 属性来为表格呈现一个标题,与可访问指南中所建议的一样。

该控件为导航而呈现 LinkButton 控件,从而需要客户端脚本来运行。要避免客户端脚本的需要,就要创建模板并且为这些功能添加 Button 控件。

CatalogZone 该控件不生成与其相关联的 label 元素。

所有动作都生成相同的链接文字。

链接的替代文字被生成,但是不能自定义。

该控件需要客户端脚本来运行。

该控件不呈现访问键或者制表索引设置。

ChangePassword 该控件需要客户端脚本来运行。

如果你配置该控件来使用图片,就要把相应的文字属性设置成适当的替代文字。例如,如果你把 ChangePasswordButtonType 属性设置成了 Image,就要把 ChangePasswordButtonText 属性设置成替代文字。

CheckBox 把 AutoPostBack 属性设置成 true 会导致该控件需要客户端脚本。
CheckBoxList 把 AutoPostBack 属性设置成 true 会导致该控件需要客户端脚本。
CreateUserWizard 如果你配置该控件来使用图片,就要把相应的文字属性设置成适当的替代文字。例如,如果你把 CancelButtonType 设置成了 Image,就要把 CancelButtonText 属性设置成替代文字。

该控件中的按钮,比如 Submit 按钮和在步骤之间移动的链接,都需要客户端脚本。

DetailsView 如果你创建了一个 ButtonField 列并且为该按钮指定了一个图片,你就不可以明确地为该图片指定替代文字。该图片会把对象的 Text 属性当成替代文字来使用。

该控件使用一个 HTML 表格来呈现布局,从而不是被一些指南所建议的,因为它不包括表格头信息。

如果你启用分页并且设置了 NextPageImageUrl 和 PreviousPageImageUrl 属性,你就不可以明确地为当作分布按钮而被使用的图片设置替代文字。而是使用 PagerTemplate 属性,因此你可以正确地定义分页的显示。

默认时,该控件使用 LinkButton 控件,从而需要客户端脚本来运行切换到编辑模式,分页,等等功能。要避免客户端脚本的需要,就要创建模板模板并且为这些功能添加 Button 控件。

当你把该控件的 AutoGenerateEditButton 属性设置成 true 并且没有相关联的 label 元素的时候会自动生成文本框。要避免这样,就要创建模板字段并且添加你自己的 Label 和 TextBox 控件,并且手动地关联它们。设置该控件的 Caption 和 CaptionAlign 属性来为该表格呈现一个标题,与可访问指南中被建议的一样。

DropDownList 该控件不支持被建议的 ListItemGroup 来允许列表被划分成子区域。

把 AutoPostBack 属性设置成 true 会导致该控件需要客户端脚本。

EditorZone 当图标被显示的时候,所有动作都会显示相同的替代文字。

该控件需要客户端脚本来运行。

该控件不呈现访问键或者制表索引设置。

该控件不生成与其相关联的 label 元素。

链接的替代文字被生成,但是不能自定义。

FormView 该控件使用一个 HTML 表格来呈现布局,从而不是被一些指南所建议的,因为它不包括表格头信息。

默认时,该控件使用 LinkButton 控件,从而需要客户端脚本来运行切换到编辑模式,分页,等等功能。要避免客户端脚本的需要,就要使用 PagerTemplate 属性并且为这些功能添加 Button 控件。

设置该控件的 Caption 和 CaptionAlign 属性来为该表格呈现一个标题,与可访问指南中被建议的一样。

GridView 把 RowHeaderColumn 属性设置成数据字段的名称并且把 UseAccessibleHeader 属性设置成 true 来让该控件呈现适应于可访问指南的信息。

如果你创建一个 ButtonField 对象并且为该按钮指定一个图片,你就不可以明确地为该图片指定替代文字。该图片会把对象的 Text 属性当作替代文字来使用。

设置该控件的 Caption 和 CaptionAlign 属性来为该表格呈现一个标题,与可访问指南中被建议的一样。

默认时,该控件使用 LinkButton 控件,从而需要客户端脚本来运行切换到编辑模式,分页,等等功能。要避免客户端脚本的需要,就要创建模板并且为这些功能添加 Button 控件。

如果你启用分页并且设置了 NextPageImageUrl 和 PreviousPageImageUrl 属性,你就不可以明确地为当作分页按钮而被使用的图片设置替代文字。而是使用 PagerTemplate 属性,因此你可以正确地定义分页的显示。

被用来实现编辑、选择,分页和其他更新功能的默认控件都需要客户端脚本。要避免这样,就要创建模板列并且手动地添加 Button 控件。

当你把该控件的 AutoGenerateEditButton 属性设置成 true 并且没有相关联的 label 元素的时候,会自动生成文字框。要避免这样,就要创建模板列并且添加你自己的 Label 控件和 TextBox 控件,并且手动关联它们。

如果你启用排序,那么列头中的链接就是 LinkButton 控件并且需要客户端脚本来运行。要避免客户端脚本的需要,就要创建模板并且为这些功能添加 Button 控件。

HyperLink 如果你把 ImageUrl 属性设置成一个图片文件的 URL,就要设置 Text 属性来为结果图片指定替代文字。

为链接设置 Target 属性来打开新的窗口,不是可访问指南所建议的。

Image 默认时,该控件不呈现替代文字。需要设置 AlternateText 属性。如果该图片没有功能用途,就要把 GenerateEmptyAlternateText 属性设置成 true 来呈现一个被设置成空字符串("")的 alt 特性,从而导致屏幕阅读器跳过该图片。
ImageButton 该控件需要客户端脚本来运行。

默认时,该控件不呈现替代文字。需要设置 AlternateText 属性。

不要把 ImageButton 控件当成一个图片地图来使用,因为它不支持包括自身替代文字的区域。而使用 ImageMap 控件来替代。

ImageMap 默认时,该控件不呈现替代文字。需要设置 AlternateText 属性。

如果你设置了该控件或者用来回传的单独热点的 HotSpotMode 属性,该控件就需要客户端脚本来运行。

为链接设置 Target 属性打开一个新窗口,不是被可访问指南所建议的。

Label 要使用该控件来为文本框或者其他控件呈现一个 label,把 AssociatedControlID 属性设置成控件的 ID 来关联标签。
LayoutEditorPart 始终包括其他 Web Parts 控件的 LayoutEditorPart 控件来实现页面的可访问。否则,用户只可以使用鼠标来拖动 Web Parts 控件。

该控件不生成与其相关联的 label 元素。

所有动作都生成相同的链接文字。

链接的替代文字被生成,但是不能自定义。

该控件需要客户端脚本来运行。

该控件不呈现访问键或者制表索引设置。

LinkButton 该控件需要客户端脚本来运行。

不要把多个 LinkButton 控件的 Text 属性设置成相同的字符串,因为用户所依赖的屏幕阅读器将不能辨别按钮。

ListBox 该控件不支持被建议的 ListItemGroup 来允许列表被划分成区域。

把 AutoPostBack 属性设置成 true 会导致控件需要客户端脚本。

Login 当 LoginButtonType 属性被设置成 Image 的时候,LoginButtonText 属性的值就会当作替代文字被使用。

该控件不呈现访问键或者制表索引设置。

LoginName 把 ToolTip 属性设置成类似于[已作为用户登入]的文字,因此屏幕阅读器将正确地解释该控件的文字。
LoginStatus 该控件使用一个 LinkButton 控件来显示 Logout 链接,并且因此需要客户端脚本来运行。要避免客户端脚本的需要,就要创建模板并且为这些功能添加 Button 控件。
Menu 把该控件的 SkipLinkText 属性设置成字符串来让控件呈现被建议的跳过导航链接。

该控件需要客户端脚本来运行。

在不支持控件的所有客户端功能的浏览器中,浏览器将刷新窗口来显示次要的导航,从而可能导致屏幕阅读器开始重新阅读该页面。

为链接设置 Target 属性打开新的窗口,从而不是被可访问指南所建议的。

该控件使用一个 HTML 表格来呈现布局,从而不是被一些指南所建议的。

配置该控件拥有鼠标指针的幻灯效果(比如创建快捷菜单)不是被可访问指南所建议的。

PageCatalogPart 该控件不呈现与其相关联的 label 元素。

所有动作都生成相同的链接文字。

链接的替代文字被呈现,但是不能自定义。

控件需要客户端脚本来运行。

该控件不呈现访问键或者制表索引设置。

PasswordRecovery 如果页面的 ClientTarget 属性被设置成 DownLevel,控件就需要客户端脚本来运行。

当 SubmitButtonType 属性被设置成 Image 的时候,SubmitButtonText 属性的值就会当作替代文字而被使用。

该控件不呈现访问键或者制表索引设置。

PropertyGridEditorPart 该控件不生成与其相关联的 label 元素。

所有动作都生成相同的链接文字。

链接的替代文字被呈现,但是不能自定义。

该控件需要客户端脚本来运行。

该控件不呈现访问键或者制表索引设置。

RadioButton 把 AutoPostBack 属性设置成 true 会导致该控件需要客户端脚本。
RadioButtonList 把 AutoPostBack 属性设置成 true 会导致该控件需要客户端脚本。
SiteMapPath 把该控件的 SkipLinkText 属性设置成字符串来让该控件呈现被建议的跳过导航链接。

在网站地图 XML 文件中,设置每个网站地图节点的 description 特性来为屏幕阅读器提供可识别的导航链接标题。

Table、TableRow、TableCell、TableHeaderCell,TableHeaderRow 和 TableFooterRow 设置这些控件的 Caption 和 CaptionText 属性来为表格呈现一个标题,与可访问指南中所建议的一样。

当创建一个 Table 对象的时候,还应该包括 TableHeaderRow 和 TableHeaderCell 控件。

在 TableHeaderRow,Table 和 TableFooterRow 控件中,把 TableSection 属性设置成 TableBody,TableHeader 或者 TableFooter。这会导致这些控件分别呈现 thead,tbody 和 tfoot 元素。

在 TableCell 控件中,设置 AssociatatedHeaderCellID 属性来让该控件以它的标题来呈现与单元格相关联的 header。

设置这些控件的 Scope 属性把 header 关联到相应的数据列中。

TextBox 把 AutoPostBack 属性设置成 true 会导致该控件需要客户端脚本。
TreeView 把该控件的 SkipLinkText 属性设置成字符串来让该控件呈现被建议的跳过导航链接。

把节点的 PopulateOnDemand 属性设置成 true 会导致该控件表现一种与可访问指南不兼容的方式。

该控件需要客户端脚本来运行。

把 TreeView 控件或者单独节点的 Target 属性设置成 _blank 会导致该控件打开一个新窗口,从而不是被可访问指南所建议的。

WebPartZone 该控件不生成与其相关联的 label 元素。

所有动作都生成相同的链接文字。

链接的替代文字被呈现,但是不能自定义。

该控件需要客户端脚本来运行。

该控件不呈现访问键或者制表索引设置。

如果你把 HelpMode 属性设置成 Modal 或者 Modeless,该控件就会打开一个新窗口,从而不是被可访问指南所建议的。

Wizard 该控件为导航呈现 LinkButton 控件,从而需要客户端脚本来运行。要避免客户端脚本的需要,就要创建模板并且为这些功能添加 Button 控件。
验证控件 默认时,验证控件呈现客户端脚本来完成客户端验证。但是,因为内建的验证控件(除了 CustomValidator 控件)都会自动在服务器代码中完成多余的验证检查,你可以把 EnableClientScript 属性设置成 false 来避免呈现这些验证控件的客户端脚本。

把 Text 和 ErrorMessage 属性设置成有意义的错误消息。不要把它们设置成星号(*)。

转载于:https://www.cnblogs.com/Laeb/archive/2007/03/21/683271.html

ASP.NET 控件与可访问相关推荐

  1. 使用 ASP+ DataGrid 控件来创建主视图/详细资料视图

    Nikhil Kothari Microsoft Corporation 2000年8月 简介 Microsoft® Visual Studio.NET 的下一发行版包括 DataGrid Web 控 ...

  2. Silverlight 3.0 不再包含 asp:silverlight 控件

    从 Silverlight 2 升级到 Silverlight 3 可能会报如下错误,程序中可能引用了 asp:silverlight 控件: Could not load file or assem ...

  3. 【转】Asp.net控件开发学习笔记整理篇 - WebControl基类

    最近一直在做MVC项目,对于WEBFORM 好像快忘记了.周末无聊,顺带看看他人的笔记.再次温习下. 复习大纲: 导航.页面生命周期及其它导论 一.服务器控件生命周期 二.控件开发基础 三.Asp.n ...

  4. 介绍ASP.NET控件ID

    ASP.NET控件ID 经常见到有人说在ASP.NET中不要使用动态控件,我想主要的原因在于使用动态控件会带来一些问题,在做项目的过程中,我将由动态加载控件引发的总是作了一个小小的总结. 1 .在使用 ...

  5. 【转】“线程间操作无效: 从不是创建控件的线程访问它”

    经典解决"线程间操作无效: 从不是创建控件的线程访问它" 在编程中经常会遇到在一个按钮中执行复杂操作,并将复杂操作最后返回的值加入一个ListView或ComboBox中候选.这个 ...

  6. 为ASP.NET控件加入快捷菜单

    Cutting Edge:为ASP.NET控件加入快捷菜单 英文原文: Adding a Context Menu to ASP.NET Controls 作者:Dino Esposito 翻译: M ...

  7. 一起谈.NET技术,asp.net控件开发基础(17)

    本篇将开始介绍如自定义数据绑定控件,这里感谢很多人的支持,有你们的支持很高兴.这里首先需要大家熟悉asp.net模板控件的使用,还有自定义模板控件.因为数据绑定控件多是基于模板控件的. 一.回顾 如果 ...

  8. 今天你写控件了吗?----ASP.net控件开发系列

    今天你写控件了吗?----ASP.net控件开发系列之开篇 早段时间,同事之间很流行打CS,所以那段时间的问候变成了"今天你杀XX了吗?" 控 件开发也许是程序员最能发掘自己创造力 ...

  9. ASP.NET控件集合

    文章目录 前言 一.控件分类 1.HTML控件 2.HTML服务器控件 3.ASP.NET服务器控件 4.用户控件和自定义控件 二.HTML控件和ASP.NET服务器控件 1.HTML控件 2.ASP ...

  10. 一起谈.NET技术,asp.net控件开发基础(18)

    本篇继续上篇的讨论,可能大家已经在使用asp.net2.0了,DataSource属性不再使用,而是跟数据源控件搭配使用.现在讨论的绑定技术都是基于1.1版本,先熟悉一下,本质上是一样的,这样一步步的 ...

最新文章

  1. Linux中的简单文本处理
  2. 网页怎么在图片上添加文字_想给图片添加文字,留白,添加小印章?用手机三步搞定...
  3. FaaS — Serverless — 实现原理
  4. time and value
  5. PHP替换回车换行的三种方法
  6. Atcoder Keyence Programming Contest 2020 D - Swap and Flip
  7. iphone电压测试软件,‎App Store 上的“ECG Test Pro”
  8. 剑指offer题目汇总
  9. python如何在文本内排序_在python中对文本文件中的项进行排序
  10. Django(1.7 part1)
  11. 测试POSIX、System V消息队列时延和性能
  12. FTP与SFTP两者有什么区别
  13. PHPExcel读取excel文件
  14. oracle通过数据泵导出数据,Oracle通过PL/SQL数据泵导出导入数据的命令
  15. Tensorflow游乐场
  16. IE网页木马 - 使用 JS 实现打开网页后直接运行木马程序
  17. 人类最早计算机阿西莫夫,“人类先知”阿西莫夫50年前的2014年6大预言
  18. 负载均衡——三角传输
  19. 拍牌神器是怎样炼成的(一)--- 键鼠模拟之WinAPI
  20. SIM800C实验记录之通过GPRS上网

热门文章

  1. iOS NSMutableURLRequest 上传图片
  2. FastHook——实现.dynsym段和.symtab段符号查询
  3. JS9 -- switch
  4. 使用REST风格架构您需要知道的一些事
  5. [LeetCode] One Edit Distance 一个编辑距离
  6. Switch View when host XmlFormView in aspx
  7. React 页面渲染后自动执行onClick事件问题
  8. JS和JS是IE上JavaScript或JScript的缩写。
  9. Vue之单文件组件的数据传递,axios请求数据及路由router
  10. SecureCRT问题