Ob Windows Forms, KDE und Co. oder auch im Internet: Immer spielen Steuerelemente(Controls) eine wichtige Rolle bei der Gestaltung von Benutzeroberflächen. Die Steuerelemente sind dabei vorgefertigte Bausteine, aus denen die Oberfläche zusammengebaut wird, zudem werden immer wiederkehrende Aufgaben (z. B. Login-Felder, Navigation, Suche, Werkzeugleisten, …) durch Steuerelemente rationalisiert.
Alle Steuerelemente in ASP.NET erben wichtige Eigenschaften vonControl, unter anderem die Funktionalität für die Datenbindung und für Design und Layout; der Programmierer hat dadurch ein einfaches und einheitliches Kochrezept.
Diese Zeichenfolge identifiziert ein Steuerelement, sie darfkeine Leerzeichen enthalten. Da sich der HTML-Code (z. B. in der default.aspx Datei) und der Programmcode (z. B. in default.aspx.cs) auf dieselbe Klasse beziehen, definiert die ID, die im HTML-Element angegeben wurde, die Membervariable im Code. Wem das jetzt zu schnell ging, sollte sich das folgende Beispiel genau ansehen:
<!-- hier der HTML-Code, die zugehörige Klasse ist "_Default" --><%@ Page Language="C#" CodeFile="Default.aspx.cs" Inherits="_Default" %><html xmlns="http://www.w3.org/1999/xhtml" ><head runat="server"></head><body> <form runat="server"> <!-- hier wird ein Member vom Typ Label definiert mit dem Namen "MeinLabel --> <asp:Labelid="MeinLabel" runat="server" /> </form></body></html>
// der zugehörige C#-Codeusing System;using System.Web;using System.Web.UI.WebControls;public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { // dasselbe Label!MeinLabel.Text="Beschriftung..."; }}Hiermit steuert man, wie das Steuerelement gerendert wird: für den Browser-Benutzer sichtbar oder nicht. Ändert man diese Eigenschaft nachdem die Seite bereits gerendert wurde, hat das keinen Einfluss auf die Ausgabe.
Liefert das übergeordnete Steuerelement zurück. DasParent-Steuerelement kann dabei auch die Webseite selbst sein. Der Nutzen wird oft erst bei größeren Webseiten deutlich. Der umgekehrte Weg ist durch das Duo
möglich. Beispiel:
// Hat MeinCtrl seinerseits Controls ?if (MeinCtrl.HasControls()){ // das erste enthaltene Control wird nicht gerendert... MeinCtrl.Controls[0].Visible = false;}Zusammen bilden diese Eigenschaften eine Baum-Struktur, die den gesamten hierarchischen Aufbau einer Webseite enthält.
Trotz dieser gemeinsamen Erblasten existieren in ASP.NET drei Arten von Steuerelementen:
Diese Steuerelemente wurden bisher schon bei einigen Beispielen verwendet. Diese Steuerelemente bilden das Fundament einer ASP.NET-Webseite, im Jargon der ASP.NET-Dokumentation werden sieWebserversteuerelemente genannt. Diese Steuerelemente enthalten auch Eigenschaften und Methoden, die für das Design einer Seite verwendet werden können.
Ein Familienportrait der ASP.NET-Steuerelemente würde den Umfang dieses Buchs bei weitem sprengen, so dass hier nur die wichtigsten vorgestellt werden
Hierfür sind vor allem dasLabel- und dasLiteral-Steuerelement vorgesehen. Beide geben den Text, der mit Hilfe derText-Eigenschaft festgelegt wird, einfach auf der Webseite aus. Die Funktion hinter diesen Elementen ist denkbar einfach. Die Elemente werden in die Seite durch die Tags
in die Seite eingefügt. Um den Unterschied zwischen diesen „Zwillingen“ hervorzuheben, sollte man beide in Aktion ansehen:
<%@ Page Language="C#" CodeFile="beispiele.aspx.cs" Inherits="_meineSeite" %><html xmlns="http://www.w3.org/1999/xhtml" ><head runat="server"> <title>ASP.NET-Steuerelemente</title></head><body> <form runat="server"> <h1>Die einfachen Steuerelemente zur Text-Ausgabe …</h1> <p> Label:<asp:Label runat="server" /><br /> Literal: <asp:Literal runat="server" /> </p> </form> </body></html>
der zugehörige C#-Code:
using System;using System.Web;using System.Web.UI.WebControls; public partial class _meineSeite : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { // auf beiden Elementen wird der gleiche String ausgegeben string ausgabe = "Fischers Fritze fischt Fische!";labelBsp.Text = ausgabe;literalBsp.Text = ausgabe; }}Der entscheidende Ausschnitt in der HTML-Ausgabe lautet dann
<h1>Die einfachen Steuerelemente zur Text-Ausgabe …</h1> <p> Label: <span>Fischers Fritze fischt Fische!</span> <br /> Literal: Fischers Fritze fischt Fische! </p>
Das heißt: das Labelelement ergänzt den ausgegebenen Text um weitere Elemente, das Literalelement gibt den Text ohne zusätzliche Umschweife aus.