Formulardaten
In diesem Thema wollen wir uns damit beschäftigen, wie Sie in ASP.NET Formulardaten abrufen können. Dabei beziehen wir uns bei
diesen Beispielen lediglich auf die HTTP-Methode POST. Wie Sie GET-Parameter (oder auch als URL-Parameter bezeichnet)
abrufen, haben wir ja bereits im vorherigen Thema kennengelernt. Das Abrufen von
POST-Parametern funktioniert sehr ähnlich. Der einzige Unterschied ist, dass wir hier an Stelle des assoziativen Array
QueryString
das assoziative Array Form
verwenden. Auch hier wird null
als Wert
zurückgegeben, wenn ein Parameter nicht mitgesendet wurde.
Einfaches Formular
Im folgenden Beispiel haben wir ein einfaches HTML-Formular mit den Feldern anrede
, vorname
und
nachname
. Oberhalb des Formulars werden die Werte mit Hilfe der Server-Tags für Inline-Code ausgegeben.
Wert "anrede": <%= Request.Form["anrede"] != null ? Request.Form["anrede"] : "-" %><br /> Wert "vorname": <%= Request.Form["vorname"] != null ? Request.Form["vorname"] : "-" %><br /> Wert "nachname": <%= Request.Form["nachname"] != null ? Request.Form["nachname"] : "-" %><br /> <br /> <form action="Default.aspx" method="post"> <table> <tr> <td style="width: 100px;">Anrede:</td> <td> <select name="anrede"> <option value="H">Herr</option> <option value="F">Frau</option> </select> </td> </tr> <tr> <td style="width: 100px;">Vorname:</td> <td><input type="text" name="vorname" /></td> </tr> <tr> <td style="width: 100px;">Nachname:</td> <td><input type="text" name="nachname" /></td> </tr> <tr> <td></td> <td><input type="submit" value="Absenden" /></td> </tr> </table> </form>
Formular mit Serverzugriff
Einen „besseren“ Zugriff auf Formulardaten bzw. Formularelemente haben wir, wenn wir den Formularelementen eine ID geben und
das Attribut runat
mit dem Wert server
setzen. Nachdem dies erledigt ist, können wir ganz normal
mittels der .NET-Sprache auf das Steuerelement zugreifen, da das Steuerelement über den Namen, der mittels des ID-Attributs
vergeben wurde, als Eigenschaft Teil der Klasse von der jeweiligen Seite ist. Um den Wert eines Formularfelds abzurufen, kann
die Eigenschaft Value
des Objekts verwendet werden. Elemente die ein id
- und runat
-Attribut
haben und somit ein Zugriff vom Server möglich ist, werden auch als HTML-Server-Elemente bezeichnet. Das folgende
Beispiel ist vom Formular-Aufbau gleich wie das obere Beispiel, enthält jedoch nicht HTML-Elemente sondern HTML-Server-Elemente:
Wert "anrede": <%= inputAnrede.Value %><br /> Wert "vorname": <%= inputVorname.Value %><br /> Wert "nachname": <%= inputNachname.Value %><br /> <br /> <form action="Default.aspx" method="post" runat="server"> <table> <tr> <td style="width: 100px;">Anrede:</td> <td> <select name="anrede" id="inputAnrede" runat="server"> <option value="H">Herr</option> <option value="F">Frau</option> </select> </td> </tr> <tr> <td style="width: 100px;">Vorname:</td> <td><input type="text" name="vorname" id="inputVorname" runat="server" /></td> </tr> <tr> <td style="width: 100px;">Nachname:</td> <td><input type="text" name="nachname" id="inputNachname" runat="server" /></td> </tr> <tr> <td></td> <td><input type="submit" value="Absenden" /></td> </tr> </table> </form>
Wichtig: Das Attribut runat
im form
-Element darf nicht fehlen, andernfalls wird ein Fehler
ausgelöst.
Übrigens: Wie Ihnen vielleicht aufgefallen ist, werden die Werte nach dem Klick auf „Absenden“ nicht verworfen, so wie
es im ersten Beispiel der Fall ist oder wie wir es von PHP gewohnt sind. Das Speichern der Werte wird durch den sogenannten
Ansichtszustand verwaltet. Ist dies für ein Element nicht erwünscht, so kann die Eigenschaft EnableViewState
auf
false
gesetzt werden.