Seit über drei Jahren ist ASP.NET 2.0 nun schon in der Final Version auf dem Markt und bis Mitte letzter Woche habe ich sie übersehen: Die Eigenschaft AssociatedControlID des ASP.NET Label Controls. Bisher habe ich auf den Einsatz dieses Controls möglichst verzichtet, da es in meinen Augen “nur” einen unnötigen Span-Tag um meinen Text setzt.
Habe ich in meiner aspx Seite also folgenden Code:
<asp:Label ID=“Label1” runat=“server” Text=“Ich bin ein Label”></asp:Label><asp:TextBox ID=“TextBox1” runat=“server”> Ich bin eine Textbox</asp:TextBox>
wird dies zu folgendem Markup:
Ich bin ein Label
Alles in allem ist dies wenig spektakulär.
Erweitere ich meinen Code nun jedoch um die Eigenschaft AssociatedControlID
<asp:Label ID=“Label2” runat=“server” AssociatedControlID=“TextBox2” Text=“Ich bin auch ein Label”></asp:Label><asp:TextBox ID=“TextBox2” runat=“server”>Ich bin auch eine Textbox</asp:TextBox>
wird das ASP.NET Label nicht mehr als Span-Tag, sondern als HTML Label-Tag gerendert:
<label for="TextBox2" id="Label2">
Ich bin auch ein Label****
Schön und gut, aber wo liegt der Vorteil?
Zum einen schafft der HTML Code durch den Zusatz “for=” eine logische Verknüpfung zwischen Eingabefeld und Beschriftung. Dies kann von Screenreadern ausgelesen werden und verbessert somit die Barrierefreiheit.
Dies ist jedoch nicht alles. Für den Standardbenutzer ergibt sich der Vorteil, dass er nun innerhalb des Browsers mit der Maus einfach auf das Label klicken kann und anschließend automatisch das assozierte Steuerlement den Fokus erhält.
Mein Fazit: ein tolles Feature, was sowohl Usability, als auch Barrierefreiheit mit sehr wenig Aufwand erhöht.
Näheres findet sich übrigens auch bei selfhtml.
Die Frage ist nur: Warum habe ich es so lange übersehen? Vielleicht liegt es daran, dass es unter ASP.NET 1.0 noch nicht existierte und die anderen Neuerungen einfach so viel aufregender waren?