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 mitrunat="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 einLabel-Element immer für einen Text. Nun gibt es bei ASP.NET »zufällig« das Web Control<asp:Label>. Auch hier ist wiederrunat="server" Pflicht, und auch hier erfolgt der Zugriff wieder über dasid-Attribut. Der einzige Unterschied zu den zuvor gezeigten HTML Controls ist eine andere Eigenschaft für den Text; hier heißt sieText. 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 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>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 runat="server" /><br />E-Mail: <asp:TextBox runat="server" /><br />Buch: <asp:DropDownList 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" runat="server" /></form><asp:Label 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. |