Das
Webforms-Programmiermodell in ASP.NET ist objektorientiert und ereignisbasiert (ähnlich
der Entwicklung von Desktop-Anwendungen mit Visual Basic 6.0 und Windows Forms in .NET). Bei den Serversteuerelementen sind zwei
Darstellungsformen zu unterscheiden: In der .aspx-Seite
sind Serversteuerelemente(Server Controls) repräsentiert durch Tags
(Serversteuerelement-Tag oder Server Control Tag) mit dem Attribut runat="server" und einem Präfix (im
Standard asp:). Im Rahmen der serverseitigen Programmierung werden die
Serversteuerelemente durch .NET-Objekte (Serversteuerelementobjekt oder Server
Control Object) repräsentiert mit Attributen, Methoden und Ereignissen. In dem
Serversteuerelementobjekt ist die Logik für das Adaptive Rendering hinterlegt.
Ein Serversteuerelementobjekt ist eine Instanz einer von der Klasse System.Web.UI.Control abgeleiteten Klasse. Ein Webform selbst ist eine von der Klasse System.Web.UI.Page
abgeleitete Klasse. Sie wird auch als Seitenklasse bezeichnet.
HINWEIS
Um die Herausforderungen des parallelen Zugriffs durch zahlreiche Benutzer muss sich der Entwickler in ASP.NET (anders als beispielsweise in Java Servlets) keine Gedanken machen, da jeder einzelne Aufruf eine eigene Instanz der
von Page abgeleiteten Seitenklasse erhält.

Abbildung 4.2 Abstraktion
durch Serversteuerelemente
Das Serversteuerelementobjekt wird durch die Tag-Deklaration
in der Webseite initialisiert und durch den serverseitigen Programmcode im
Folgenden manipuliert. Die generierte Ausgabe ist die Mischung aus in den Tags
hinterlegten Vorgaben und dem Programmablauf.
Deklaration in der .aspx-Seite (Serversteuerelement-Tags)
|
Verwendung im Programmcode (Serversteuerelementobjekt)
|
<asp:TextBox
id="Vorname" runat="server">kein Name
eingetragen </asp:TextBox>
|
Vorname.Text
= "Holger"
|
Tabelle 4.1 Verwendung von Serversteuerelementen
HINWEIS
Der objektorientierte programmatische Zugriff auf den Inhalt der Webseite löst das
sequenzielle Erzeugen von HTML-Quellcode ab, das im klassischen ASP und in
verwandten Techniken wie PHP verwendet wird. Microsoft macht dazu die
Werbeaussage, dass in ASP.NET gegenüber ASP zwischen 40 % und 70 % weniger Programmcode
geschrieben werden muss. Ab ASP.NET 2.0 soll der Aufwand nochmals um 70 % reduziert
worden sein.
Beispiel
Anhand eines einfachen Beispiels kann der Unterschied in der
Programmierung zwischen dem klassischen »Hinausschreiben« von HTML und der
objektorientierten Programmierung in ASP.NET gezeigt werden. Die Anwendung
erhöht den Wert in einem Eingabefeld bei jedem Roundtrip um eins. Wenn die Zahl
gerade ist, bekommt das Textfeld einen gelben, sonst einen grünen Hintergrund.

Abbildung 4.3 Erhöhen eines Zählers in einem
Eingabefeld
<!--- Formulardefinition ASP -->
<FORM
id="Form1" method="post">
<INPUT
name="count1" type="text"
value="<%=Request("count1")+1%>"
<%if Request("count1") mod 2 = 0 then%>
style="BACKGROUND-COLOR: yellow">
<%else%>
style="BACKGROUND-COLOR: greenyellow">
<%end if%>
<BR>
<INPUT type="submit" value="erhöhen (ASP)"
name="Submit1">
</FORM>
Listing 4.1 Lösung in ASP
In der Gegenüberstellung dazu folgt nun die elegantere
Lösung in ASP.NET.
<!--- Formulardefinition ASP.NET -->
<FORM id="Form2" method="post"
runat="server">
<asp:TextBox id="TextBox1"
runat="server">1</asp:TextBox>
<asp:Button id="Button1" runat="server"
Text="erhöhen (ASP.NET)"></asp:Button>
</FORM>
<script runat="server">
' === Ereignisbehandlung
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
TextBox1.Text = CInt(TextBox1.Text) + 1
If CInt(TextBox1.Text) Mod 2 = 0 Then
TextBox1.BackColor = System.Drawing.Color.Yellow
Else
TextBox1.BackColor = System.Drawing.Color.GreenYellow
End If
End Sub
</script>
Listing 4.2 Lösung in ASP.NET
WICHTIG
In ASP.NET ist es auch weiterhin erlaubt, reines HTML sowie Render- und
Display-Blöcke alternativ zu Serversteuer-elementen zu verwenden. Diese Inhalte
können dann aber nicht über ein Objekt auf der Serverseite verändert werden. Um
die gesamte Seite objektorientiert manipulierbar zu machen, muss man die
Serversteuerelemente Label
oder PlaceHolder verwenden. Allerdings benötigen diese Serversteuerelemente mehr Rechenzeit als
statisches HTML. Der Einsatz sollte daher wohl überlegt sein.
Inhalt dieses Kapitels:
<< Kompatibilität zu Windows Forms
Steuerelement-Hierarchie
(Objektbaum) >>