ASP.NET Lab

The Best Web, The Best Future

博客园 首页 新随笔 订阅 管理

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 属性设置成有意义的错误消息。不要把它们设置成星号(*)。

posted on 2007-03-21 23:03  Laeb  阅读(789)  评论(0编辑  收藏  举报