26.3 Web Controls  
Wie Sie sehen konnten, kann eine bestehende HTML-Seite relativ schnell für ASP.NET umgestellt werden: Alle Elemente, die serverseitig modifiziert werden sollen, müssen mit runat="server" versehen werden.
Die Firma Microsoft versucht jedoch schon seit Jahren – und das ziemlich erfolglos – die Entwicklung von Windows-Anwendungen der Entwicklung von Web-Anwendungen anzugleichen. Die Idee lautet: Wenn die Anwendungen ähnlich erstellt werden können, wird aus einem guten Windows-Entwickler sofort ein fähiger Web-Entwickler. Über diese Folgerung kann man streiten, dennoch gibt es immer wieder Ansätze von Microsoft-Entwicklungsumgebungen, die sowohl für Standalone-Programme als auch für Webseiten verwendet werden können.
Der vorerst letzte Höhepunkt dieser Bestrebungen ist bei ASP.NET realisiert worden und in Visual Studio besonders offensichtlich zu beobachten: Microsoft hat eigene Tags eingeführt, die so genannten Web Controls. Diese beginnen immer mit <asp: und ähneln vom Namen her Windows-Elementen. Hier ein Beispiel: Bei der Windows-Programmierung (mit Visual Studio, aber auch mit Konkurrenzprodukten) steht ein Label-Element immer für einen Text. Nun gibt es bei ASP.NET »zufällig« das Web Control <asp:Label>. Auch hier ist wieder runat="server" Pflicht, und auch hier erfolgt der Zugriff wieder über das id-Attribut. Der einzige Unterschied zu den zuvor gezeigten HTML Controls ist eine andere Eigenschaft für den Text; hier heißt sie Text. Folgendes Beispiel illustriert das:
<%@ Page Language="JScript" %>
<script runat="server">
function Page_Load() {
Ausgabe.Text = "Web Controls sind recht praktisch";
}
</script>
<html>
<head>
<title>ASP.NET</title>
</head>
<body>
<asp:Label id="Ausgabe" runat="server" />
</body>
</html>
Tags für Web Controls müssen immer abgeschlossen werden, entweder wie gezeigt mit .../> oder mit dem zugehörigen End-Tag. Das wäre hier </asp:Label> gewesen.
 Hier klicken, um das Bild zu Vergrößern
Abbildung 26.4 Die Ausgabe – wie erwartet
Der Text wird ausgegeben, womit Sie sicherlich gerechnet haben; der HTML-Quellcode im Browser sorgt jedoch für eine kleine Überraschung:
<html>
<head>
<title>ASP.NET</title>
</head>
<body>
<span id="Ausgabe">Web Controls sind recht praktisch</span>
</body>
</html>
Das Web Control wurde also in ein entsprechendes HTML-Element umgewandelt, und zwar in <span>!
Das Beispiel von oben mit dem Mini-Formular lässt sich recht schnell umschreiben. Die Tücken stecken hier im Detail: Die Control-Namen sind neu, und das gilt auch für die Namen der Eigenschaften, über die der Zugriff auf die Formulardaten erfolgt. Deswegen sehen Sie hier ohne weiteren Kommentar den entsprechenden Code:
<%@ Page Language="JScript" %>
<script runat="server">
function Ausgabe(o: Object, e: EventArgs) {
var s: String;
s = "Name: " + Name.Text + "<br />";
s += "E-Mail: " + Email.Text + "<br />";
s += "Buch: " + Buch.SelectedItem.Value;
Absatz.Text = s;
}
</script>
<html>
<head>
<title>ASP.NET</title>
</head>
<body>
<form runat="server">
Name: <asp:TextBox id="Name" runat="server" /><br />
E-Mail: <asp:TextBox id="Email" runat="server" /><br />
Buch: <asp:DropDownList id="Buch" runat="server">
<asp:ListItem Value="JS7" Text="JavaScript-Handbuch, 7. Auflage" />
<asp:ListItem Value="AS" Text="Einstieg in ActionScript" />
<asp:ListItem Value="WS" Text="Web Services – Grundlagen" />
<asp:ListItem Value="WSPHP" Text="Web Services mit PHP" />
</asp:DropDownList>
<asp:Button Text="Versenden" OnClick="Ausgabe" runat="server" />
</form>
<asp:Label id="Absatz" runat="server" />
</body>
</html>
Aber Web Controls sind nicht nur ein Pendant zu HTML Controls, sie gehen auch weiter. Ein besonders aussagekräftiges Beispiel hierfür ist das folgende dreizeilige Listing:
<form runat="server">
<asp:Calendar runat="server" />
</form>
Die Browserausgabe sehen Sie in Abbildung 26.5.
 Hier klicken, um das Bild zu Vergrößern
Abbildung 26.5 Das Calendar-Web-Control im August 2006
Es wird also ein Kalender erzeugt, der sich automatisch im richtigen Monat befindet (es ist auch möglich, den aktuellen Tag zu markieren). Die drei Zeilen ASP.NET-»Code« haben zu etwa 30 Zeilen HTML-Code geführt, der aus über 6500 Zeichen besteht. Damit ist klar, dass Web Controls nicht nur ein Ersatz für HTML Controls sein sollen, sondern eine Erweiterung sind.
|