Barrierefreie Webseiten mit ASP.NET 2.0 - Teil 1
Wie viele wissen, war es mit dem 1.1er Framework ein Ding der Unmöglichkeit barrierefreie Webseiten zu erstellen, wenn vorhandene ASP.NET Controls genutzt wurden. Seit ich mit dem 2.0 er Framework arbeite bin ich also den ASP.NET Controls aus dem Weg gegangen, wenn ich barrierefreie Webseiten gestalten wollte. Das heißt ich habe eigenes, sauberes XHTML raus gerendert.
In dem Artikel „Building ASP.NET 2.0 Web Sites Using Web Standards“ (1) von Stephen Walther (2) wird allerdings beschrieben, wie es mit einigen Tricks dennoch möglich ist ASP.NET 2.0 Webseiten zu gestalten, die den aktuellen Standards entsprechen.
Mit diesem Beitrag möchte ich eine kleine Serie starten, welche die Erstellung einer barrierefreien Website dokumentiert. Zum mitverfolgen des Fortschritts steht das Webprojekt unter http://demosite.gutsch-online.de online zur Verfügung. Zu jedem Artikel dieser Serie gibt es den aktuellen Stand des Projekts unter http://www.gutsch-online.de/show/german/downloads/barrierefreies_asp.net_2.0_.aspx zum Downloaden.
Um die verschiedenen Browser zu zwingen sich an die aktuellen Standards zu halten, werde ich das YAML Framework (3) von Dirk Jesse (4) verwenden. Falls es mit den ASP.NET Controls dennoch Probleme geben sollte, werde ich versuchen die „CSS Control Adapters“ (5) einzusetzen. Wenn auch das nicht zur Lösung „Barrierefreie Webseite mit ASP.NET 2.0“ beitragen sollte ist das Projekt gescheitert.
Starten werde ich mal mit einer Grundkonfiguration der Webanwendung wie es von Stephen Walther beschrieben wird. Ich erstelle eine Masterpage (hier „demosite.master“) und ersetze den DOCTYPE durch den für XHTML-Strict:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
Strict deswegen, weil ich absolut keine Fehler erlauben möchte.
Als nächstes wird der „head“-Tag erweitert:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
Hier wird der Namespace für das XHTML sowie die Standartsprache auf Deutsch festgelegt (wird auch für die Aussprache der Screenreader benötigt).
Stephen Walther schreibt, dass ein kleiner Eintrag in die „web.config“ die ASP.NET Controls dazu veranlasst standartkonformes XHTML zu rendern. Dazu wird folgender Eintrag in die „web.config“ unter „system.web“ geschrieben:
<xhtmlConformance mode="Strict" />
Des Weiteren habe ich ein Webform mit dem Namen „Default.aspx“ erstellt, die nur die Pagedirektiven beinhaltet:
<%@ Page Language="C#" MasterPageFile="~/demosite.master" CodeFile="Default.aspx.cs" Inherits="Default" Title="Demo Seite" %>
Als letztes für diesen Teil wird in die Global.asax eine Methode eingefügt, die den Contenttype entsprechend dem Standart setzt, vorausgesetzt der Browser akzeptiert diesen:
void Application_PreSendRequestHeaders(object sender, EventArgs e)
{
if (Array.IndexOf(Request.AcceptTypes,
"application/xhtml+xml") > -1)
{
Response.ContentType = "application/xhtml+xml";
}
}
Diese Methode kann als Hack für den IE angesehen werden, da mal wieder fast alle Browser außer der IE diesen Contenttype unterstützen.
DemoSite ansehen
Teil 1 downloaden
(1) http://msdn2.microsoft.com/en-us/library/aa479043.aspx
(2) http://www.superexpert.com/
(3) http://www.yaml.de/
(4) http://www.highresolution.info/
(5) http://www.asp.net/CSSAdapters/