MSDN Magazin > Home > Ausgaben > 2007 > April >  ASP.NET 2.0: Durchsetzen von Webstandards ...
ASP.NET 2.0
Durchsetzen von Webstandards zur Verbesserung des Zugriffs
Ben Waldron

Themen in diesem Artikel:
  • Anwenden von Webstandards
  • CSS-Steuerelementadapter
  • Themen und Masterseiten in ASP.NET 2.0
In diesem Artikel werden folgende Technologien verwendet:
ASP.NET 2.0
Laden Sie den Code für diesen Artikel herunter: WebStandards2007_04.exe (318 KB)
Code online durchsuchen
Ich muss zugeben, dass Webstandards für mich in der Vergangenheit nicht immer eine große Rolle gespielt haben. Wie viele von Ihnen habe ich mit dem Schreiben von Webseiten zu einer Zeit begonnen, in der die ersten Webbrowser veröffentlicht wurden. Damals dachte ich, dass das Schließen jedes HTML-Absatzes meine Arbeit verlangsamen und nur unnötig viel der kostbaren 28K Bandbreite eines Benutzers verbrauchen würde. Also habe ich es nicht getan. Solange es dem Browser nichts ausmachte, machte es mir auch nichts aus.
Seitdem habe ich jedoch die Bedeutung von Webstandards für die Zukunft des Webs und für webbasierte Software allgemein erkannt. Webstandards beinhalten natürlich sehr viel mehr als das Schließen von HTML-Tags. Sie sind ein wichtiger Faktor dafür, wie gut sich Softwarekomponenten in zukünftigen Kontexten einsetzen lassen.
Webanwendungen sollten einerseits die W3C-Standards für XHTML, Cascading Stylesheets (CSS), XML und so weiter einhalten, andererseits suchmaschinenfreundlich und zugänglich sein, über für Menschen lesbare URLs verfügen und sonstige anerkannte Praktiken implementieren, durch die Suche und Verwendung vereinfacht werden. Webstandards erfordern außerdem eine genaue Beachtung der Codestruktur, die den Websites zugrunde liegt und eine zukünftige Verwaltung erleichtert. In diesem Artikel wird aufgezeigt, warum sich jeder an Webstandards halten sollte, insbesondere diejenigen, die Serversteuerelemente schreiben.

Anwenden von Webstandards
Webstandards haben Einfluss auf vier weit gefasste Kategorien: Codegültigkeit, Sitenavigation, Zugriff und Trennung von Inhalt und Design, wie in Abbildung 1 gezeigt. Im Hinblick auf die grundlegenden Fragen in diesen Kategorien ist die Aufgabe der Erstellung von Code, der den Standards entspricht, mehr oder weniger erfüllt. Nachfolgend wird jede Kategorie im Einzelnen betrachtet.

Standard Beschreibung
Codegültigkeit Websites müssen gültige XHTML und CSS gemäß W3C-Standards verwenden und gut geschrieben sein. Dies sorgt für maximale Browserunterstützung, schnellere Wiedergabe und Code, der einfacher zu verstehen ist.
Sitenavigation Websites sollten über eine hierarchische Struktur verfügen und eine Sitemap sowie benutzerfreundliche URLS enthalten. Benutzer sollten in der Lage sein, ihren Standort innerhalb einer Site auf Basis der URL zu bestimmen.
Zugriff Websites müssen für behinderte Benutzer zugänglich sein und sollten über eine große Bandbreite an Browsern und Geräten zur Verfügung stehen.
Trennung zwischen Entwurf und Inhalt Websites müssen ein Stylesheet für die Definition von Layout und Präsentation verwenden, wobei der Inhalt in XHTML dargestellt wird.
XHTML und jigsaw.w3.org/css-validator für CSS. Diese Dienste können als Teil des Erstellungsprozesses automatisiert oder vor der Codebereitstellung manuell durchgeführt werden.
Die meisten Browser sind so konzipiert, dass sie Webstandards erfüllen. Dies gilt insbesondere für Internet Explorer® 7.0 und Mozilla Firefox 2.0, die Ende 2006 veröffentlicht wurden. Wenn Sie sich also an die Webstandards dieser Browser halten, können Sie sich ziemlich sicher sein, dass Ihr Code in aktuellen Browsern korrekt gerendert wird.
Sitenavigation Viele Content Management-Systeme nehmen Inhalt so auf, dass die Seiten-URLs dem Benutzer keinen Hinweis darauf geben, wo sich die Seite in Bezug auf den Rest der Site befindet. Dynamisch erstellter Inhalt scheint außerdem nicht benutzerfreundliche URLs zu erstellen, da Informationen wie eindeutige Bezeichner in der URL häufig über die Abfragezeichenfolge übergeben werden. Um diese Probleme zu beheben, sollten URLS anhand von Themenbereichen organisiert werden und dem Benutzer anzeigen, wo er sich befindet. Benutzerfreundliche URLs für dynamisch erstellten Inhalt können durch Umschreiben von URLs erzielt werden. Dabei weist ein HTTP-Modul bei der Verarbeitung der HTTP-Anforderung eine nicht benutzerfreundliche URL einer benutzerfreundlichen URL zu. Das Umschreiben von URLs wird im Microsoft® .NET Framework unterstützt. Durch benutzerfreundliche URLs wird Ihr Inhalt außerdem leichter auffindbar. Einige Suchmaschinen weisen Seiten einen höheren Rang zu, wenn sie über solche URLs verfügen.
Zugriff Das Erstellen oder Rendern von Code, der für Personen mit Behinderungen zugänglich ist, ist für ein Unternehmen so wichtig wie die Herstellung von Türen, die Zugang für Rollstuhlfahrer bieten. Es ist unmöglich, die Behinderungen aller Benutzer vorherzusagen, die Ihre Site besuchen. Beispielsweise sind zwischen fünf und zehn Prozent aller Männer farbenblind. Glücklicherweise gibt es ein paar einfache Möglichkeiten, eine Website zugänglicher zu machen. Das Vermeiden von Tabellen kann helfen, da Bildschirmsprachausgaben, die den Bildschirm für Benutzer mit eingeschränktem Sehvermögen lesen, durch das Layout von Tabellen verwirrt werden. Zugängliche Formulare sind ebenso wichtig. Ich habe zum Beispiel selbst den Fehler begangen, eine zweispaltige Tabelle zu erstellen, in der eine Spalte die Beschriftung und die andere das HTML-Formularelement enthielt. Die richtige Methode besteht darin, eine Beschriftung mit dem Attribut „for“ zu definieren, das die Kennung des in der Beschriftung enthaltenen Formularelements angibt (siehe Abbildung 2).
<form id="FormAccessible" runat="server">
    <fieldset>
        <legend>Personal Information</legend>
        <p>
            <label for="TextFirstName">First Name</label> 
            <asp:TextBox ID="TextFirstName" runat="server" 
                AccessKey="f" TabIndex="0" />
        </p>
        <p>
            <label for="TextLastName">Last Name</label> 
            <asp:TextBox ID="TextLastName" runat="server" 
                AccessKey="l" TabIndex="1" />
        </p>
    </fieldset>
    <fieldset>
        <legend>Contact Information</legend>
        <p>
            <label for="TextEmail">Email</label> 
            <asp:TextBox ID="TextEmail" runat="server" 
                AccessKey="e" TabIndex="2"/>
        </p>
    </fieldset>
</form>
Weitere Methoden für verbesserten Zugriff beinhalten die Auswahl von leicht zu unterscheidenden Farben für wichtige Elemente wie Links und Schaltflächen, die Gewährleistung, dass Seiten auch in vergrößerter Schrift lesbar sind (eine Schriftvergrößerung sollte ermöglicht werden) und die Verwendung des Alt-Attributs zur Beschreibung von Bildern. Ein praktischer Nebeneffekt der Verwendung von Alt ist, dass die Beschreibung von Suchmaschinen indiziert werden kann.
Weiterhin ist ein geräteumfassendes Websitedesign wichtig, sodass mehr Personen darauf zugreifen können. Schließlich verfügen Benutzer über Handys, PDAs, Smartphones und sonstige Geräte, mit denen sie auf das Web zugreifen. Für sie ist es frustrierend, nicht auf die benötigten Daten zugreifen zu können, da die Site nicht auf einem mobilen Gerät aufgerufen werden kann.
Trennung von Inhalt und Design Webseiten gab es schon lange bevor XML zum heutigen universellen Standard wurde. Bei XML gibt es eine klare Unterscheidung zwischen Inhalt und Design, da XML eine Vermischung von Stilinformationen mit Inhalt, wie dies bei HTML der Fall ist, erschwert.
Die Vorteile dieser Trennung sind vielfältig. Das Beibehalten aller Layout- und Stilinformationen in CSS-Stylesheets ermöglicht die Unterstützung mehrerer Geräte. Dadurch wird die ausgegebene XHTML kleiner. Die XHTML ist übersichtlicher und organisierter, was für die Bearbeitung und das Debugging von Vorteil ist. Eine übersichtlichere XHTML erleichtert Bildschirmsprachausgaben außerdem, den Inhalt einer Webseite zu lesen, und ermöglicht Suchmaschinen eine genauere Seitenindizierung.

Arten von XHTML
Die Bedeutung von Webstandards wurde oben dargelegt – jetzt wollen wir Webseiten erstellen, bei denen diese Standards angewendet werden. Der erste Schritt beinhaltet die Auswahl des korrekten Dokumenttyps. Die Dokumenttypdefinition (DOCTYPE) gibt dem Validierungsprogramm des Browsers an, welche Art von XHTML verwendet wird. Es gibt drei Arten von XHTML 1.0: Strict, Transitional und Frameset. XHTML 1.1 bietet nur eine Art der Einschränkung von HTML-Elementen, die als Präsentationselemente angesehen werden. Die Typen sind in Abbildung 3 aufgelistet.

Version Syntax Description
XHTML 1.0 Strict <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict //EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> Unterstützt nur Elemente und Attribute, die in HTML 4.01 definiert sind, und befolgt XML-Syntaxregeln.
XHTML 1.0 Transitional <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional //EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> Unterstützt einige veraltete Elemente und Attribute, die als Präsentationselemente angesehen werden (wie z. B. <center> und <u>).
XHTML 1.0 Frameset <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset //EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"> Unterstützt die Verwendung von Frames mithilfe der Elemente <object> oder <iframe>. Normalerweise wird von der Verwendung von iframes abgeraten.
XHTML 1.1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 //EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> Die neueste W3C-Empfehlung entfernt alle Elemente, die als Präsentationselemente angesehen werden.
Es ist besser, die XHTML 1.1 oder HTML 1.0 Strict DocTypes zu verwenden, da sie dazu beitragen, dass alle Präsentationselemente von der XHTML in Stylesheets migriert werden. Eine Übereinstimmung mit diesen Typen stellt allerdings nicht vollkommen sicher, dass eine Seite kompatibel mit Webstandards ist, da die Verwendung von XHTML-Tabellen für die Positionierung von Inhalt nach wie vor erlaubt ist. Sie können sich daher nicht vollständig auf eine Validierung verlassen, da eine Validierung nicht nur deshalb fehlschlägt, weil Sie Tabellen verwenden.
Der Transitional DocType sollte verwendet werden, wenn Sie nicht alle Präsentationselemente vollständig aus dem Code entfernen können. Er sollte für die Angabe verwendet werden, dass die Seite nicht streng kompatibel ist und zu einem späteren Zeitpunkt umgestaltet werden muss.
Frames werden von der XHTML 1.0-Spezifikation unterstützt, wurden jedoch in XHTML 1.1 entfernt. Zukünftig wird die Verwendung von iframes und Objekten wahrscheinlich durch die XFrame-Spezifikation ersetzt. Das Hinzufügen von Frames wurde bisher normalerweise nicht empfohlen, da diese als nicht benutzerfreundlich angesehen wurden. Wenn Sie je auf einer Webseite mit Frames auf die Schaltfläche „Zurück“ geklickt haben, wissen Sie, was ich meine.

ASP.NET 2.0 als Webstandardplattform
ASP.NET 1.1 wies einige wohlbekannte Mängel auf. Die Standardsteuerelemente erzeugten Code, der die Validierung nicht bestand. Dies wurde größtenteils auf die Art der Verarbeitung von ViewState in ASP.NET 1.1 zurückgeführt, nämlich mithilfe eines ausgeblendeten Eingabetags, das nicht in einer Blockanzeige enthalten war, wie hier:
<input type="hidden" name="__VIEWSTATE" 
value="dDwtMTU1NzQzNDgy..." />
Durch diese Tatsache sowie einige andere Syntaxprobleme hat sich ASP.NET 1.1 leider den Ruf der Nichtkompatibilität erworben.
In ASP.NET 2.0 wurden viele Webstandardprobleme behoben. Wenn Sie sich beispielsweise die Quelle der mit ASP.NET 2.0 erzeugten Seiten anschauen, wird deutlich, dass ViewState nun von einem div-Tag eingeschlossen ist, wodurch es kompatibel wird:
<div>
    <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" 
           value dDwtMTU1NzQzNDgy..." />
</div>
Microsoft hat öffentlich bekannt gegeben, dass eins der Ziele von ASP.NET 2.0 eine bessere Anpassung an Webstandards ist, und Sie können mit ASP.NET 2.0 tatsächlich kompatible Websites und Steuerelemente erstellen. Eine brauchbare Ressource für das Erstellen kompatibler Websites ist Stephen Walthers MSDN®-Artikel Entwickeln von ASP.NET 2.0 Websites unter Verwendung von Webstandards. Dieser 78-seitige Artikel beschreibt detailliert das Erstellen von Sites gemäß Webstandards.

CSS-Steuerelementadapter
ASP.NET 2.0 bringt zwar große Fortschritte hinsichtlich der Kompatibilität, doch es gibt nach wie vor Hindernisse zu überwinden. Einige ASP.NET 2.0-Steuerelemente werden beispielsweise als HTML-Tabellen wiedergegeben, was nicht der Fall sein dürfte. In bestimmten Fällen sollten Steuerelemente wie GridView oder DataList Ausgaben innerhalb einer Tabelle wiedergeben, da die Art des Steuerelements tabellarische Daten vorschreibt. Andere Steuerelemente, wie das Menüsteuerelement, sollten nicht als Tabelle wiedergegeben werden. Abbildung 4 zeigt einen Abschnitt einer HTML-Tabelle, die für das Menüelement der Menüsteuerung wiedergegeben wird. Die Tabelle mit den zahlreichen Stilattributen machen diesen Code alles andere als ideal.
<table id="ctl00_menuTop" class="ctl00_menuTop_2" 
       cellpadding="0" cellspacing="0" border="0">
  <tr onmouseover="Menu_HoverStatic(this)" 
      onmouseout="Menu_Unhover(this)" 
      onkeyup="Menu_Key(this)" id="ctl00_menuTopn0">
    <td>
      <table cellpadding="0" cellspacing="0" border="0" width="100%">
        <tr>
          <td style="white-space:nowrap;width:100%;">
            <a class="ctl00_menuTop_1"
               href="http://Msdn.WebStandards/Default.aspx">Main Page</a>
          </td>
          <td style="width:0;">
            <img src="/Msdn.WebStandards/WebResource.axd?d=hnH9bjBrxucw46WA5Xha0Kh9gZ-YF67wSyd4b51QsEc1&amp;t=632962190992968750" 
                 alt="Expand Main Page" 
                 style="border-style:none;vertical-align:middle;" />
          </td>
        </tr>
      </table>
    </td>
  </tr>
</table>
Da die HTML als Tabelle wiedergegeben wird, während die Daten in der Tabelle normalerweise nicht tabellarisch sind, wird dieser Code als nicht kompatibel mit Webstandards angesehen. Die Verwendung einer HTML-Tabelle für die Wiedergabe einer Liste mit Menüelementen gleicht der Verwendung eines DataSet zur Verarbeitung einer Aufgabe, für die Sie normalerweise ein Array oder eine Zeichenfolgesammlung verwenden würden. Die anerkannte Methode für die Wiedergabe hierarchischer Daten wie diese ist die Verwendung der ungeordneten HTML-Liste, was sinnvoll ist, da ein Menü in Wirklichkeit eine Serie verschachtelter Listen ist.
Glücklicherweise stellt Microsoft das ASP.NET 2.0 CSS-kompatible Steuerelementadapter 1.0-Toolkit zur Verfügung, mit dem Sie die Standardausgabe der zu entfernenden Steuerelemente überschreiben, ersetzen oder HTML injizieren können, wenn das Steuerelement wiedergegeben wird. Nach mehreren Betaiterationen wurde das Toolkit veröffentlicht und kann von asp.net/CSSAdapters/Default.aspx heruntergeladen werden.
Die CSS-Steuerelementadapter bieten die Möglichkeit, die Ausgabe eines beliebigen Steuerelements zu überschreiben, unabhängig davon, ob es mit ASP.NET 2.0, von einem Drittanbieter oder benutzerdefiniert bereitgestellt wird, ohne den Quellcode des Steuerelements zu ändern. Als Entwickler verfügen Sie nicht über den Quellcode aller verwendeten Steuerelemente, und selbst wenn dies der Fall wäre, ist eine Änderung nicht immer die beste Methode, die Funktionalität zu überschreiben. Dies gilt insbesondere dann, wenn die Aufgabe lediglich darin besteht, die wiedergegebene HTML zu ändern.
Die Architektur, die die Steuerelementadapter steuert, baut auf dem Adapter- oder Wrapper-Designmuster auf. Durch die abstrakte Klasse ControlAdapter werden die Grundfunktionen für alle Adapter definiert. Die WebControlAdapter-Klasse erbt die ControlAdapter-Funktionalität. Dabei werden Methoden für die Wiedergabe individueller HTML-Tags hinzugefügt. Klassen wie MenuAdapter erben vom WebControlAdapter, um für ein Steuerelement spezifische Funktionalität zu bieten. Abbildung 5 zeigt das Klassendiagramm für die Steuerelementadapter.
Abbildung 5 ASP.NET 2.0 Steuerelementadapterklassen (Klicken Sie zum Vergrößern auf das Bild)

Die Implementierung dieser Architektur ist einfach, insbesondere für Steuerelemente, für die bereits Adapter entwickelt wurden. Die meisten ASP.NET-Steuerelemente verfügen glücklicherweise über Adapter. Im gezeigten Beispiel wird die MenuAdapter-Klasse verwendet, um das Standard-HTML-Tabellenlayout mit einer ungeordneten Liste zu überschreiben.
Der erste Schritt hierzu ist das Erstellen oder Anpassen einer Browserdefinitionsdatei, die zum Erkennen des Browsers verwendet wird, der auf die ASP.NET 2.0-Site zugreift und spezifische Funktionalität für diesen Browser bietet. Für Benutzer, die die Site von einem Mobilgerät aus aufrufen, können auf diese Weise benutzerspezifische Funktionen eingerichtet werden. In Verbindung mit CSS-Steuerelementadaptern wird die Browserdefinitionsdatei jedoch zur Angabe verwendet, dass kompatible Browser einen oder mehrere Adapter einsetzen sollten.
Die in Abbildung 6 aufgeführte XML zeigt eine vollständige Browserdefinitionsdatei, die ASP.NET anweist, für alle Browser, die den beschriebenen Kriterien entsprechen, alle MenuControl-Klassen zu MenuAdapter zu leiten. Die Kriterien beschreiben alle W3C-kompatiblen Browser, die JavaScript und CSS unterstützen. Dazu gehörten die meisten heutzutage verwendeten Browser. Die Browserdefinitionsdatei bietet Ihnen außerdem Informationen, die Sie für alle sonstigen Anpassungen der Benutzerfunktionen verwenden können.
<browsers>
  <browser refID="Default">
    <controlAdapters>
      <adapter controlType="System.Web.UI.WebControls.Menu"
               adapterType="CSSFriendly.MenuAdapter" />
    </controlAdapters>
  </browser>

  <browser id="W3C_Validator" parentID="default">
    <identification>
      <userAgent match="^W3C_Validator" />
    </identification>
    <capabilities>
      <capability name="browser"              value="W3C Validator" />
      <capability name="ecmaScriptVersion"    value="1.2" />
      <capability name="javascript"           value="true" />
      <capability name="supportsCss"          value="true" />
      <capability name="supportsCallback"     value="true" />
      <capability name="tables"               value="true" />
      <capability name="tagWriter"            
        value="System.Web.UI.HtmlTextWriter" />
      <capability name="w3cdomversion"        value="1.0" />
    </capabilities>
  </browser>
</browsers>
Der letzte Schritt der Implementierung des CSS-Steuerelementadapters ist das Erstellen einer Klasse, die von der Adapterklasse abgeleitet ist. Abbildung 7 zeigt den Beispielmenüadapter, der mit dem ASP.NET 2.0-Steuerelementadapter geliefert wird. Die Klasse wird von der MenuAdapter-Klasse abgeleitet, listet alle Elemente auf, aus denen sich die Steuerelemente zusammensetzen, und überschreibt die HTML mit den entsprechenden Tags. Hier wird der Anteil der Klasse gezeigt, der den Beginn der ungeordneten Liste in der BuildItems-Methode wiedergibt.
Public Class MenuAdapter
        Inherits System.Web.UI.WebControls.Adapters.MenuAdapter
    ...
        
    Protected Overrides Sub RenderContents(ByVal writer As HtmlTextWriter)
        If (Extender.AdapterEnabled) Then
            writer.Indent = writer.Indent + 1

            BuildItems(Control.Items, True, writer)

            writer.Indent = writer.Indent—1
            writer.WriteLine()
        Else
            MyBase.RenderContents(writer)
        End If
    End Sub

    Private Sub BuildItems(ByVal items As MenuItemCollection, _
            ByVal isRoot As Boolean, ByVal writer As HtmlTextWriter)
        If (items.Count > 0) Then
            writer.WriteLine()

            writer.WriteBeginTag("ul")
            If isRoot Then
                writer.WriteAttribute("class", "AspNet-Menu")
            End If
            writer.Write(HtmlTextWriter.TagRightChar)
            writer.Indent = writer.Indent + 1

            For Each item As MenuItem In items
                BuildItem(item, writer)
            Next

            writer.Indent = writer.Indent—1
            writer.WriteLine()
            writer.WriteEndTag("ul")
        End If
    End Sub
End Class
In der HTML-Quelle in Abbildung 8 sehen Sie, dass die Tabelle aus der Menüsteuerung durch eine ungeordnete Liste ersetzt wird. Die ungeordnete Liste ist jedoch nicht der einzige nennenswerte Aspekt in der HTML-Ausgabe. Die Ausgabe ist außerdem auffallend übersichtlicher, da sie nicht mit Stil und Skriptcode überhäuft ist. Die gesamte Positionierung und der Stil befinden sich nun in der CSS-Datei für das Menü, und das Menü wird jetzt als kompatibel mit Webstandards angesehen.
<div class="AspNet-Menu-Horizontal">
  <ul class="AspNet-Menu">
    <li class="AspNet-Menu-WithChildren">
    <a href="http://Default.aspx" class="AspNet-Menu-Link">Web Standards</a>
      <ul>
        <li class="AspNet-Menu-Leaf">
          <a href="http://ControlAdapters.aspx">Control Adapters Sample</a>
        </li>
        <li class="AspNet-Menu-Leaf">
          <a href="http://AccessibleForm.aspx">Accessible Form</a>
                    </li>
                </ul>
            </li>
        </ul>
</div>
Der CSS-Steuerelementadapter beinhaltet Adapter für zahlreiche Steuerelemente, einschließlich für Strukturansicht, Anmeldung und CreateUserWizard – Steuerelemente, die immer wieder Tabellen wiedergeben, wenn sie dies nicht tun sollten. Es dauert nur wenige Minuten, die Beispiele zu einem vorhandenen Projekt hinzuzufügen und nach Wunsch anzupassen.

Masterseiten und Themen
Da Sie jetzt über die Tools zur Wiedergabe von Steuerelementen verfügen, die den Webstandards entsprechen, können Sie nun eine gesamte Site kompatibel machen. Die Kombination von Masterseiten und Themen bietet eine leistungsstarke und flexible Infrastruktur für eine Website.
Masterseiten ermöglichen Webentwicklern, flexible Vorlagen für Webseiten zu erstellen. Masterseiten sind ein leistungsfähiges Tool zum Erstellen wiederverwendbarer Komponenten für Webseiten und bieten außerdem eine Möglichkeit, die Einhaltung der Standards auf einer Site zu gewährleisten. Durch Erstellen einer Masterseite, die den XHTML 1.1 DocType verwendet, kann eine Einhaltung für alle Seiten innerhalb der Site sichergestellt werden. Masterseiten sind auch praktisch, da Sie alle Änderungen am DocType an einer Stelle vornehmen können, wenn eine Site beispielsweise von XHTML 1.0 Transitional zu Strict migriert.
ASP.NET 2.0-Themen ermöglichen Ihnen das Erstellen mehrerer Entwürfe für denselben Inhalt zur Verbesserung des Zugriffs. Themen können beispielsweise den Zugriff für Benutzer mit eingeschränktem Sehvermögen verbessern, indem Schriftart und Bilder vergrößert werden können. Wenn ein Wechseln von Themen innerhalb der Masterseite ermöglicht wird, können Benutzer eine Website auf eine Weise anzeigen, die ihren individuellen Bedürfnissen am ehesten entspricht.
Meiner Meinung nach ist ein Verfahren besonders hilfreich, Benutzern einen Wechsel von Themen zu ermöglichen, und zwar die Definition einer Klasse, die aus der Page-Klasse abgeleitet wird. Die Möglichkeit, Themen zu wechseln, ist im Lebenszyklus einer ASP.NET-Seite nur ganz am Anfang des Lebenszyklus in der OnPreInit-Methode verfügbar. Die Klasse in Abbildung 9 zeigt, wie das von einem Benutzer ausgewählte Thema erfasst und in der überschriebenen Methode angewendet wird.
''' <summary>
'''  Override Page with PreInit method to allow for theme switching
''' </summary>
''' <remarks>"__Theme" represents the RadioButton list of theme</remarks>
Public Class ThemeSelectablePage
        Inherits System.Web.UI.Page
    Protected Overloads Overrides Sub OnPreInit(ByVal e As EventArgs)
        For Each key As String In Me.Request.Form.AllKeys
            If key.IndexOf("__Theme") > -1 Then
                Page.Theme = Me.Request.Form(key).Trim
                Exit For
            End If
        Next
        MyBase.OnPreInit(e)
    End Sub
End Class
Diese Klasse sucht nach einer Anforderungsformularvariablen mit einem vordefinierten Namen und übergibt den Wert an die Themenklasse. Alle Webseiten, die diese Klasse implementieren, bieten die für eine Aktivierung mehrerer Themen erforderliche Infrastruktur. Dies ist eine sehr einfache Möglichkeit, einen Themenwechsel zu allen Seiten einer Site hinzuzufügen.

Mein Anliegen
In diesem Artikel wurde erörtert, weshalb Webstandards so wichtig sind, und es wurden Verfahren aufgezeigt, die für das Erstellen kompatibler Websites eingesetzt werden können. Oft ist es nicht ganz einfach, diese Standards zu übernehmen, da dies häufig nicht der einfachste Weg ist. Auf diese Weise kann jedoch am besten gewährleistet werden, dass die heute von Ihnen erstellten Steuerelemente und HTML in Zukunft für eine größere Bandbreite an Benutzern auf mehr Geräten zugänglich sind. Browser entsprechen zunehmend diesen Standards, es obliegt nun der Entwicklercommunity, mit Webstandards kompatiblen Code zu schreiben.

Ben Waldron ist Chief Technology Officer bei Pop Art Inc, einer interaktiven Agentur, die eine Vielzahl von webbasierten Lösungen für Kunden bereitstellt. Er ist in Portland, Oregon, in den USA ansässig und beantwortet Fragen zu Lösungsmöglichkeiten unter der folgenden E-Mail-Adresse: Ben.Waldron@PopArt.com.

Page view tracker