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 (Serversteuer­element-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) >>