Galileo Computing < openbook >
Galileo Computing - Programming the Net
Galileo Computing - Programming the Net


Einstieg in ASP.NET von Matthias Lohrer
Einstieg in ASP.NET
gp Kapitel HTML-Serversteuerelemente
  gp 6.1 System.Web.UI.LiteralControl
  gp 6.2 Die HTML-Serversteuerelemente. Vererbungshierarchie und gemeinsame Eigenschaften
  gp 6.3 Die Klasse HtmlImage
  gp 6.4 HtmlContainerControl und abgeleitete Klassen
    gp 6.4.1 Die Basisklasse HtmlContainerControl
    gp 6.4.2 HtmlGenericControl
    gp 6.4.3 HtmlAnchor
    gp 6.4.4 HtmlTable, HtmlTableRow und HtmlTableCell
    gp 6.4.5 HtmlForm
    gp 6.4.6 HtmlButton
    gp 6.4.7 HtmlSelect
    gp 6.4.8 HtmlTextArea
  gp 6.5 HtmlInputControl und abgeleitete Klassen
    gp 6.5.1 Ein Beispiel mit mehreren Eingabeelementen
    gp 6.5.2 HtmlInputButton
    gp 6.5.3 HtmlInputImage
    gp 6.5.4 HtmlInputFile
    gp 6.5.5 HtmlInputText
    gp 6.5.6 HtmlInputCheckBox
    gp 6.5.7 HtmlInputRadioButton
    gp 6.5.8 HtmlInputHidden

Kapitel 6 HTML-Serversteuerelemente

Der Entwickler zu ASP.NET: »Darf ich vorstellen? Ein Text-Eingabefeld mit der Bezeichnung txtEMail.«
ASP.NET: »Angenehm, Element txtEMail. Wie ich sehe, stammen Sie von HtmlInputText ab.«

Wenn Sie in einer aspx-Seite keine serverseitigen Steuerelemente, sondern nur reinen HTML-Code verwenden, dann »kennt« ASP.NET Ihre Seite eigentlich nicht. ASP.NET sieht in Ihrer Seite nur eine beliebige Folge von Zeichen, deren Sinn ASP.NET völlig verborgen bleibt. Erst durch die Verwendung von serverseitigen Steuerelementen gewinnt die Seite an Intelligenz. »Ach so«, sagt ASP.NET dann beispielsweise, »das hier soll ein Texteingabefeld sein. Ja, dann kann ich diese und jene Eigenschaften beeinflussen.«

Das Praktische an den HTML-Serversteuerelementen ist, dass Sie wirklich jedes beliebige HTML-Element in ein serverseitiges Steuerelement umwandeln können, indem Sie bei diesem Element lediglich zwei Attribute ergänzen:

gp  runat="server" und
gp  id ="eineIDIhrerWahl".

Durch runat="server" wird ein Element in ein serverseitiges Steuerelement verwandelt, und eine id benötigen Sie, um im Code auf dieses Steuerelement zugreifen zu können.

Mit runat="server" sagen Sie gewissermaßen zu ASP.NET: »Darf ich Sie miteinander bekannt machen?« Und ASP.NET antwortet: »Angenehm, das Steuerelement sowieso kennen zu lernen«, und kennt fortan Ihr Element von Angesicht zu Angesicht. Diejenigen HTML-Elemente, die Sie ASP.NET nicht einzeln vorstellen, subsumiert ASP.NET zur Kategorie System.Web.UI.LiteralControl. Objekte vom Typ LiteralControl enthalten mit HTML-Auszeichnungen versehenen Text, den ASP.NET nicht interpretiert, sondern einfach nur wortwörtlich übernimmt und zum Browser schickt.

Ein HTML-Serversteuerelement findet im HTML-Code stets seine Entsprechung in genau einem HTML-Element. Ein Objekt vom Typ LiteralControl kann demgegenüber zahlreiche HTML-Elemente und sogar eine komplette HTML-Seite enthalten.

Tabelle 6.1 zeigt eine Übersicht, welche HTML-Elemente in welche HTML-Serversteuerelemente umgeformt werden. Insbesondere für alle Eingabesteuerelemente stellt ASP.NET eigene Klassen zur Verfügung. Eigene Klassen gibt es außerdem für Tabellen, Bilder und Referenzen. Alle übrigen HTML-Elemente werden serverseitig mit Hilfe der Klasse HtmlGenericControl verwaltet.


HTML-Element mit dem Zusatz runat="server" HTML-Serversteuerelement
img HtmlImage
table HtmlTable
td HtmlTableCell
tr HtmlTableRow
a HtmlAnchor
form HtmlForm
button HtmlButton
input type="button" HtmlInputButton
input type="submit" HtmlInputButton
input type="reset" HtmlInputButton
input type="text" HtmlInputText
input type="password" HtmlInputText
input type="checkbox" HtmlInputCheckBox
input type="radio" HtmlInputRadioButton
input type="file" HtmlInputFile
input type="hidden" HtmlInputHidden
input type="image" HtmlInputImage
select HtmlSelect
textarea HtmlTextArea
alle anderen HTML-Elemente HtmlGenericControl
Text mit HTML-Auszeichnungen ohne den Zusatz runat="server" LiteralControl

Tabelle 6.1 Für HTML-Elemente mit dem Attribut runat="server" erstellt ASP.NET jeweils ein Objekt dieses Typs.


Tipp   HTML-Serversteuerelemente eignen sich gut, wenn eine bestehende Webapplikation in eine ASP.NET-Applikation umgewandelt werden soll. Sie müssen die Seiten nicht in die höhere Abstraktionsstufe der Webserversteuerelemente umformen, sondern Sie können nah am HTML-Code bleiben und einzelne Elemente gezielt beeinflussen.

In Kapitel 4, »Hallo, Welt!« – Ein ASP.NET-Crashkurs, haben Sie bereits Bekanntschaft mit HTML-Serversteuerelementen geschlossen. In diesem Kapitel lernen Sie die Hierarchie der zugrunde liegenden Klassen und den Umgang mit den Eigenschaften und Methoden detaillierter kennen.


Galileo Computing

6.1 System.Web.UI.LiteralControl  toptop

Die Klasse System.Web.UI.LiteralControl gehört nicht zu den HTML-Serversteuerelementen. Ich stelle diese Klasse dennoch hier kurz vor, weil Sie unweigerlich über sie stolpern werden, wenn Sie mit HTML-Serversteuerelementen arbeiten. Die Klasse LiteralControl wird am besten über eine Negation charakterisiert: Zu einem LiteralControl wird alles das, was Sie ASP.NET nicht mittels runat="server" explizit bekannt machen. Sobald Sie einem Element den Zusatz runat="server" hinzufügen, ist das jeweilige Element kein LiteralControl mehr, sondern ein spezialisiertes HTML-Serversteuerelement, für das ASP.NET besondere Klassen zur Verfügung stehen. Wenn dieser Zusatz jedoch unterbleibt, erkennt ASP.NET nur einen unspezifischen LiteralControl.

Das Skript LiteralControl01.aspx demonstriert nur, dass ein LiteralControl in gewisser Hinsicht überhaupt nichts kann. Mit einem LiteralControl erzielen Sie den gleichen Effekt, wie wenn Sie den HTML-Code direkt in den HTML-Block der aspx-Seite schreiben würden.

<!-- LiteralControl01.aspx-->
<%@ Page Language="VB" Debug="True" Strict="True"  %>
<script runat="server">
Sub Page_Load (ByVal Sender As Object, _
               ByVal E As EventArgs)
   Dim litCtrl As New LiteralControl
   litCtrl.Text = "Das ist aber <b>toll!</b>"
   meinAbsatz.Controls.Add (litCtrl)
End Sub
</script>
<html><head><title>LiteralControl-Demo</title></head>
<body>
   <p runat="server" id="meinAbsatz">
   Hier ist ein Absatz. 
   </p>
</body>
</html>

Der HTML-Block enthält lediglich einen einzelnen Absatz, den Sie mit runat="server" ASP.NET bekannt machen. Beim Laden der Seite führt der Interpreter die Ereignisprozedur Page_Load aus. Der Code erzeugt ein neues Objekt der Klasse LiteralControl und weist ihrer Eigenschaft Text den Wert "Das ist aber <b>toll!</b>" zu. Dieses LiteralControl-Objekt wird anschließend an die Controls-Collection des hart codierten Absatzes angefügt.

Abbildung 6.1 zeigt das Resultat. Der ergänzte Text erscheint hinter dem bisherigen Text des Absatzes. Alternativ hätten Sie den Text exakt so im HTML-Code angeben können oder Sie hätten beispielsweise auch die InnerHTML-Eigenschaft des Absatzes modifizieren können.

Abbildung
Hier klicken, um das Bild zu Vergrößern

Abbildung 6.1 Ein LiteralControl enthält reinen HTML-Code, den der ASP.NET-Interpreter nicht beeinflusst.

Sobald Sie aber ein Element mit runat="server" der ASP.NET-Engine vorstellen, sortiert ASP.NET den neuen Bekannten in eine seiner zahlreichen Klassen-Schubladen ein, die Sie nun näher kennen lernen werden.

  

Einstieg in VB.NET

VB.NET

Einstieg in C#

Visual C#

VB.NET und Datenbanken

Einstieg in XML




Copyright © Galileo Press GmbH 2003
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press GmbH, Gartenstraße 24, 53229 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de