共用方式為


ASP.NET 控制項和網頁可及性

更新:2007 年 11 月

ASP.NET 可讓您建立符合可及性方針的 Web 網頁。如需詳細資訊,請參閱 ASP.NET 中的網頁可及性支援

若要在 ASP.NET 中建立無障礙的 Web 應用程式,您必須了解 ASP.NET 伺服器控制項如何支援網頁可及性。在許多情況下,您必須設定控制項建立符合可及性方針的標記。在少數情況下,ASP.NET 伺服器控制項無法用於必須百分之百符合《Web 內容可及性方針》1.0 版 (WCAG) Priority 1 方針的應用程式。在上述情況下,您必須避免使用控制項。

ASP.NET 控制項網頁可及性方針

下表列出 ASP.NET 伺服器控制項,並提供控制項可及性支援的相關資訊。如果某控制項未在表格中列出,其輸出將符合可及性方針,而無需任何組態要求。

控制項

網頁可及性支援

AppearanceEditorPart

此控制項並未產生 label 項目以關聯標籤與控制項。

所有的動詞命令都會產生相同的連結文字。

會呈現連結的替代文字,但是此文字是無法自訂的。

此控制項需要用戶端指令碼才能運作。

此控制項不會呈現便捷鍵或定位點索引設定。

BehaviorEditorPart

此控制項並未產生 label 項目以關聯標籤與控制項。

所有的動詞命令都會產生相同的連結文字。

會呈現連結的替代文字,但是此文字是無法自訂的。

此控制項需要用戶端指令碼才能運作。

此控制項不會呈現便捷鍵或定位點索引設定。

BulletedList

如果控制項的 DisplayMode 屬性設為 LinkButton,則控制項需要用戶端指令碼才能發揮功用。若要避免用戶端指令碼的需要,請建立範本,並對這些函式加入 Button 控制項。

當控制項的 BulletStyle 屬性設為 CustomImage 時,請確保圖形未傳送對無法檢視該圖形之使用者不可用的意義。

對連結設定 Target 屬性就會開啟新的視窗,不過可及性方針並不建議這種做法。

Button

設定 OnClientClick 屬性會讓按鈕依賴用戶端指令碼。

Calendar

控制項未在資料行中呈現 header,但呈現以 scope 做為標題的 th 項目。

控制項配置是使用 HTML 表格呈現的,部分方針不建議這樣做。如可及性方針中所建議的,設定控制項的 CaptionCaptionAlign 屬性以呈現表格的標題。

控制項會呈現 LinkButton 控制項以進行巡覽,這需要用戶端指令碼才能發揮功用。若要避免用戶端指令碼的需要,請建立範本,並對這些函式加入 Button 控制項。

CatalogZone

此控制項並未產生 label 項目以關聯標籤與控制項。

所有的動詞命令都會產生相同的連結文字。

會呈現連結的替代文字,但是此文字是無法自訂的。

此控制項需要用戶端指令碼才能運作。

此控制項不會呈現便捷鍵或定位點索引設定。

ChangePassword

此控制項需要用戶端指令碼才能運作。

如果您設定控制項使用影像,請將對應的文字屬性設為適當的替代文字。例如,如果您將 ChangePasswordButtonType 屬性設為 Image,請將 ChangePasswordButtonText 屬性設為替代文字。

CheckBox

AutoPostBack 屬性設定為 true,就會使控制項需要用戶端指令碼。

CheckBoxList

AutoPostBack 屬性設定為 true,就會使控制項需要用戶端指令碼。

CreateUserWizard

如果您設定控制項使用影像,請將對應的文字屬性設為適當的替代文字。例如,如果您將 CancelButtonType 屬性設為 Image,請將 CancelButtonText 屬性設為替代文字。

控制項中的按鈕 (例如 [送出] 按鈕) 和在步驟間移動的連結都需要用戶端指令碼。

DataPager

如果未設定 QueryStringField 屬性,而且您是使用 NumericPagerFieldNextPreviousPagerField 物件,則 DataPager 控制項需要用戶端指令碼。如果頁面巡覽區欄位物件設定為使用影像,您就無法為影像明確指定替代文字。影像會使用文字屬性 (例如 NextPageText) 做為替代文字。或者,使用 TemplatePagerField 物件,您就可以確實定義頁面巡覽區顯示的內容。

DetailsView

如果您建立 ButtonField 資料行,並為按鈕指定影像,則無法為影像明確指定替代文字。影像會使用物件的 Text 屬性做為替代文字。

控制項配置是使用 HTML 表格呈現的,部分方針不建議這樣做,因為它不包含表格標頭資訊。

如果您啟用分頁並設定 NextPageImageUrlPreviousPageImageUrl 屬性,則無法為用做分頁按鈕的影像明確設定替代文字。請改為使用 PagerTemplate 屬性,以便您可以定義頁面巡覽區確實顯示的項目。

根據預設,這個控制項會使用需要函式 (例如切換至編輯模式、分頁等) 之用戶端指令碼的 LinkButton 控制項。若要避免用戶端指令碼的需要,請建立範本,並對這些函式加入 Button 控制項。

將控制項的 AutoGenerateEditButton 屬性設為 true 時自動產生的文字方塊,沒有關聯的 label 項目。若要避免這種情況,請建立樣板欄位並加入您自己的 LabelTextBox 控制項,並手動關聯它們。如可及性方針中所建議的,設定控制項的 CaptionCaptionAlign 屬性以呈現資料表的標題。

DropDownList

控制項不支援建議的 ListItemGroup 以允許清單細分成區段。

AutoPostBack 屬性設定為 true,就會使控制項需要用戶端指令碼。

EditorZone

顯示圖示時,所有的動詞命令都會顯示相同的替代文字。

此控制項需要用戶端指令碼才能運作。

此控制項不會呈現便捷鍵或定位點索引設定。

此控制項並未產生 label 項目以關聯標籤與控制項。

會呈現連結的替代文字,但是此文字是無法自訂的。

FormView

控制項配置是使用 HTML 表格呈現的,部分方針不建議這樣做,因為它不包含表格標頭資訊。

根據預設,該控制項會使用需要函式 (例如切換至編輯模式、分頁等) 之用戶端指令碼的 LinkButton 控制項。若要避免用戶端指令碼的需要,請使用 PagerTemplate 屬性,並對這些函式加入 Button 控制項。

如可及性方針中所建議的,設定控制項的 CaptionCaptionAlign 屬性以呈現資料表的標題。

GridView

RowHeaderColumn 屬性設為資料欄位的名稱,並將 UseAccessibleHeader 屬性設為 true,讓控制項呈現符合可及性方針的表格標頭資訊。

如果您建立 ButtonField 物件,並為按鈕指定影像,則無法為影像明確指定替代文字。影像會使用物件的 Text 屬性做為替代文字。

如可及性方針中所建議的,設定控制項的 CaptionCaptionAlign 屬性以呈現資料表的標題。

根據預設,該控制項會使用需要函式 (例如切換至編輯模式、分頁等) 之用戶端指令碼的 LinkButton 控制項。若要避免用戶端指令碼的需要,請建立範本,並對這些函式加入 Button 控制項。

如果您啟用分頁並設定 NextPageImageUrlPreviousPageImageUrl 屬性,則無法為用做分頁按鈕的影像明確設定替代文字。請改為使用 PagerTemplate 屬性,以便您可以定義頁面巡覽區確實顯示的項目。

用於實作編輯、選取、分頁和其他更新函式的預設控制項都需要用戶端指令碼。若要避免這種情況,請建立樣板資料行,並手動加入 Button 控制項。

將控制項的 AutoGenerateEditButton 屬性設為 true 時自動產生的文字方塊,沒有關聯的 label 項目。若要避免這種情況,請建立樣板資料行並加入您自己的 LabelTextBox 控制項,並手動關聯它們。

如果您啟用排序,則資料行標頭中的連結為 LinkButton 控制項,且需要用戶端指令碼才能發揮功用。若要避免用戶端指令碼的需要,請建立範本,並對這些函式加入 Button 控制項。

HyperLink

如果您將 ImageUrl 屬性設為圖形檔的 URL,請設定 Text 屬性指定結果圖形的替代文字。

對連結設定 Target 屬性就會開啟新的視窗,不過可及性方針並不建議這種做法。

Image

此控制項預設不會呈現替代文字。設定 AlternateText 屬性。如果圖形無功能目的,請將 GenerateEmptyAlternateText 屬性設為 true,以呈現設為空字串 ("") 的 alt,如此會讓螢幕助讀員略過圖形。

ImageButton

此控制項需要用戶端指令碼才能運作。

此控制項預設不會呈現替代文字。設定 AlternateText 屬性。

不要使用 ImageButton 控制項做為影像對應,因為它不支援具有自己替代文字的區域。請改為使用 ImageMap 控制項。

ImageMap

此控制項預設不會呈現替代文字。設定 AlternateText 屬性。

如果您將控制項或個別作用點 (Hot Spot) 的 HotSpotMode 屬性設為 PostBack,則控制項需要用戶端指令碼才能發揮功用。

對連結設定 Target 屬性就會開啟新的視窗,不過可及性方針並不建議這種做法。

Label

若要使用控制項呈現文字方塊或其他控制項的 label,請將 AssociatedControlID 屬性設為控制項的 ID,以與標籤相關聯。

LayoutEditorPart

一定將其他 Web 組件控制項加入 LayoutEditorPart 控制項,讓網頁成為可以存取的網頁。否則,使用者只可以使用滑鼠拖曳 Web 組件控制項。

此控制項並未產生 label 項目以關聯標籤與控制項。

所有的動詞命令都會產生相同的連結文字。

會呈現連結的替代文字,但是此文字是無法自訂的。

此控制項需要用戶端指令碼才能運作。

此控制項不會呈現便捷鍵或定位點索引設定。

LinkButton

此控制項需要用戶端指令碼才能運作。

不要將多個 LinkButton 控制項的 Text 屬性設為相同的字串,因為依賴螢幕助讀員的使用者將無法辨別按鈕。

ListBox

控制項不支援建議的 ListItemGroup 以允許清單細分成區段。

AutoPostBack 屬性設定為 true,就會使控制項需要用戶端指令碼。

Login

LoginButtonType 屬性設為 Image 時,LoginButtonText 屬性的值會用做替代文字。

此控制項不會呈現便捷鍵或定位點索引設定。

LoginName

將 ToolTip 屬性設為文字 (例如 [以使用者名稱的身分登入]),以便螢幕助讀員正確地解譯控制項的文字。

LoginStatus

控制項會使用 LinkButton 控制項顯示 [登出] 連結,因此需要用戶端指令碼才能發揮功用。若要避免用戶端指令碼的需要,請建立範本,並對這些函式加入 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 屬性 (Attribute),以向螢幕助讀員提供可用於識別巡覽連結的標題。

TableTableRowTableCellTableHeaderCellTableHeaderRowTableFooterRow

如可及性方針中所建議的,設定控制項的 CaptionCaptionAlign 屬性以呈現資料表的標題。

當建立 Table 物件時,會加入 TableHeaderRowTableHeaderCell 控制項。

TableHeaderRowTableTableFooterRow 控制項中,將 TableSection 屬性設為 TableBody、TableHeader 或 TableFooter。如此會讓控制項分別呈現 thead、tbody 和 tfoot 項目。

TableCell 控制項中,設定 AssociatedHeaderCellID 屬性,讓控制項呈現將儲存格與其標題相關聯的 header。

設定控制項的 Scope 屬性,將標頭與對應的資料行相關聯。

TextBox

AutoPostBack 屬性設定為 true,就會使控制項需要用戶端指令碼。

TreeView

將控制項的 SkipLinkText 屬性設定為字串,讓控制項呈現建議的略過巡覽連結。

將節點的 PopulateOnDemand 屬性設為 true,會導致控制項的行為方式與可及性方針不相容。

此控制項需要用戶端指令碼才能運作。

TreeView 控制項或個別節點將 Target 屬性設為 _blank,會讓控制項開啟新視窗,不過可及性方針並不建議這種做法。

WebPartZone

此控制項並未產生 label 項目以關聯標籤與控制項。

所有的動詞命令都會產生相同的連結文字。

會呈現連結的替代文字,但是此文字是無法自訂的。

此控制項需要用戶端指令碼才能運作。

此控制項不會呈現便捷鍵或定位點索引設定。

如果將 HelpMode 屬性設為 ModalModeless,則控制項會開啟新視窗,不過可及性方針並不建議這種做法。

Wizard

控制項會呈現 LinkButton 控制項以進行巡覽,這需要用戶端指令碼才能發揮功用。若要避免用戶端指令碼的需要,請建立範本,並對這些函式加入 Button 控制項。

Validator 控制項

根據預設,驗證控制項會呈現用戶端指令碼以執行用戶端驗證。不過,因為內建的 Validator 控制項 (CustomValidator 控制項除外) 會在伺服器程式碼中自動執行多餘的驗證檢查,所以您可以將 EnableClientScript 屬性設為 false,以避免為驗證控制項呈現用戶端指令碼。

TextErrorMessage 屬性設為有意義的錯誤訊息。不要將它們設為星號 (*)。

請參閱

概念

ASP.NET 中的網頁可及性支援