ASP.NET 控件与可访问
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 控件与可访问相关推荐
- 使用 ASP+ DataGrid 控件来创建主视图/详细资料视图
Nikhil Kothari Microsoft Corporation 2000年8月 简介 Microsoft® Visual Studio.NET 的下一发行版包括 DataGrid Web 控 ...
- Silverlight 3.0 不再包含 asp:silverlight 控件
从 Silverlight 2 升级到 Silverlight 3 可能会报如下错误,程序中可能引用了 asp:silverlight 控件: Could not load file or assem ...
- 【转】Asp.net控件开发学习笔记整理篇 - WebControl基类
最近一直在做MVC项目,对于WEBFORM 好像快忘记了.周末无聊,顺带看看他人的笔记.再次温习下. 复习大纲: 导航.页面生命周期及其它导论 一.服务器控件生命周期 二.控件开发基础 三.Asp.n ...
- 介绍ASP.NET控件ID
ASP.NET控件ID 经常见到有人说在ASP.NET中不要使用动态控件,我想主要的原因在于使用动态控件会带来一些问题,在做项目的过程中,我将由动态加载控件引发的总是作了一个小小的总结. 1 .在使用 ...
- 【转】“线程间操作无效: 从不是创建控件的线程访问它”
经典解决"线程间操作无效: 从不是创建控件的线程访问它" 在编程中经常会遇到在一个按钮中执行复杂操作,并将复杂操作最后返回的值加入一个ListView或ComboBox中候选.这个 ...
- 为ASP.NET控件加入快捷菜单
Cutting Edge:为ASP.NET控件加入快捷菜单 英文原文: Adding a Context Menu to ASP.NET Controls 作者:Dino Esposito 翻译: M ...
- 一起谈.NET技术,asp.net控件开发基础(17)
本篇将开始介绍如自定义数据绑定控件,这里感谢很多人的支持,有你们的支持很高兴.这里首先需要大家熟悉asp.net模板控件的使用,还有自定义模板控件.因为数据绑定控件多是基于模板控件的. 一.回顾 如果 ...
- 今天你写控件了吗?----ASP.net控件开发系列
今天你写控件了吗?----ASP.net控件开发系列之开篇 早段时间,同事之间很流行打CS,所以那段时间的问候变成了"今天你杀XX了吗?" 控 件开发也许是程序员最能发掘自己创造力 ...
- ASP.NET控件集合
文章目录 前言 一.控件分类 1.HTML控件 2.HTML服务器控件 3.ASP.NET服务器控件 4.用户控件和自定义控件 二.HTML控件和ASP.NET服务器控件 1.HTML控件 2.ASP ...
- 一起谈.NET技术,asp.net控件开发基础(18)
本篇继续上篇的讨论,可能大家已经在使用asp.net2.0了,DataSource属性不再使用,而是跟数据源控件搭配使用.现在讨论的绑定技术都是基于1.1版本,先熟悉一下,本质上是一样的,这样一步步的 ...
最新文章
- Linux中的简单文本处理
- 网页怎么在图片上添加文字_想给图片添加文字,留白,添加小印章?用手机三步搞定...
- FaaS — Serverless — 实现原理
- time and value
- PHP替换回车换行的三种方法
- Atcoder Keyence Programming Contest 2020 D - Swap and Flip
- iphone电压测试软件,App Store 上的“ECG Test Pro”
- 剑指offer题目汇总
- python如何在文本内排序_在python中对文本文件中的项进行排序
- Django(1.7 part1)
- 测试POSIX、System V消息队列时延和性能
- FTP与SFTP两者有什么区别
- PHPExcel读取excel文件
- oracle通过数据泵导出数据,Oracle通过PL/SQL数据泵导出导入数据的命令
- Tensorflow游乐场
- IE网页木马 - 使用 JS 实现打开网页后直接运行木马程序
- 人类最早计算机阿西莫夫,“人类先知”阿西莫夫50年前的2014年6大预言
- 负载均衡——三角传输
- 拍牌神器是怎样炼成的(一)--- 键鼠模拟之WinAPI
- SIM800C实验记录之通过GPRS上网
热门文章
- iOS NSMutableURLRequest 上传图片
- FastHook——实现.dynsym段和.symtab段符号查询
- JS9 -- switch
- 使用REST风格架构您需要知道的一些事
- [LeetCode] One Edit Distance 一个编辑距离
- Switch View when host XmlFormView in aspx
- React 页面渲染后自动执行onClick事件问题
- JS和JS是IE上JavaScript或JScript的缩写。
- Vue之单文件组件的数据传递,axios请求数据及路由router
- SecureCRT问题