Glengamoi (Forum) · AspHeute · .NET Heute (RSS-Suche) · AspxFiles (Wiki) · .NET Blogs

Übergeben von Informationen von einer ASP-Seite zur nächsten

Geschrieben von: Christian Koller
Kategorie: ASP Tricks

This printed page brought to you by AlphaSierraPapa

Man kann Session Variablen benutzen, um Informationen von einer ASP-Seite an andere ASP-Seiten der selben Website weiterzugeben. Dies erfordert jedoch, daß der Browser Cookies unterstützt und die ASP-Seite Sessions unterstützt.

Daneben gibt es aber noch andere Methoden, um Informationen von einer Seite zur nächsten weiterzuleiten.

Sehen wir uns einmal an, was passiert, wenn ein Benutzer von einer ASP-Seite zur nächsten geht. Der Benutzer ist auf einer Seite und kommt mittels Link, oder dem Absenden eines Formulares, von einer beliebigen ASP-Seite zur nächsten ASP-Seite.

Wenn man nun Informationen an die aufgerufene ASP-Seite weitergeben will, so muß man diese Informationen in den Link oder in das Formular auf eine Art und Weise verpacken, daß die aufgerufene ASP-Seite Zugriff auf diese Informationen erhält.

Sehen wir uns also an, wie man das Weiterleiten von Informationen bewerkstelligt für den Fall, daß der User auf einen Link einer ASP-Seite klickt um die nächste Seite aufzurufen.

Informationen über einen Link weitergeben

Der folgende Link enthält Informationen in Form eines Querystrings, der einfach an die URL des Links angehängt wird:

<a href="neueSeite.asp?Vorname=Christian&Nachname=Koller">Ein Link</a>

Wenn nun der User auf diesen Link klickt, so ruft er die Seite neueSeite.asp auf. Diese Seite wiederum kann die Werte aus dem Querystring mit Hilfe der Request.QueryString Collection auslesen:

<%
strVorname  = Request.QueryString("Vorname")
strNachname = Request.QueryString("Nachname")
%>

Das Auslesen der Werte aus dem Querystring geht also genauso vor sich, wie das Auslesen eines mit METHOD="GET" abgeschickten HTML-Formulares.

Es gibt natürlich einige wichtige Dinge, die man beachten muß, wenn man Werte in einen Querystring verpackt:

Erzeugen des Querystrings in einer ASP-Seite

Der Querystring wird einfach mit einem Fragezeichen eingeleitet und an die URL angehängt. Ein Querystring kann mehrere Felder enthalten. Jedes Feld besteht aus einem Feldnamen und einem Feldwert. Feldname und Feldwert werden durch ein Gleichheitszeichen getrennt:

Vorname=Christian

Feldnamen sollten keine Sonderzeichen, Umlaute oder Leerzeichen enthalten. Nur die zusätzliche Verwendung des Unterstriches (_) ist gefahrlos. Sonderzeichen in Feldwerten müssen richtig kodiert sein, was mit dem Einsatz der ASP-Funktion Server.URLEncode einfach zu erreichen ist.

Mehrere Felder des Querystrings werden durch das kaufmännische Und (&) verbunden. Die Reihenfolge der Felder selbst spielt keine Rolle.

Vorname=Christian&Nachname=Koller

Wie fügt man nun dynamisch Werte in den Querystrings eines Links ein? Nehmen wir einmal an, in den Variablen strVorname und strNachname werden in der ASP-Seite (natürlich vor dem Link) Werte gespeichert. Die Variablen werden dann in den Querystring des Links als Werte eingebaut:

<%
strVorname = "Lao"
strNachname = "Tse"
%>
<a href="neueSeite.asp?Vorname=<%= strVorname 
   %>&Nachname=<%= strNachname %>">Ein Link</a>

Natürlich könnte man den Link auch mit einem Response.Write Befehl zum Browser schreiben:

<%
strVorname = "Lao"
strNachname = "Tse"

Response.Write "<a href="""
Response.Write "neueSeite.asp"
' QueryString:
Response.Write "?Vorname=" & strVorname & "&Nachname=" & strNachname

Response.Write """>Ein Link</a>"
%>

Wenn man nun, aus welchem Grund auch immer, Sonderzeichen (Umlaute, Zeilenschaltungen, Leerzeichen) in den Feldwerten erwartet, so kodiert man die Feldwerte mit der Server.URLEncode Methode:

<%
strVorname = "Lao"
strNachname = "Tse"
%>
<a href="neueSeite.asp?Vorname=<%= Server.URLEncode(strVorname)
%>&Nachname=<%= Server.URLEncode(strNachname) 
%>">Ein Link</a>

Oder auch:

<%
strVorname = "Lao"
strNachname = "Tse"

Response.Write "<a href="""
Response.Write "neueSeite.asp"
Response.Write "?Vorname=" & Server.URLEncode(strVorname) 
Response.Write "&Nachname=" & Server.URLEncode(strNachname) 
Response.Write """>Ein Link</a>"
%>

Auslesen der Werte des Querystrings in der aufgerufenen Seite

Die im Querystring enthaltenen Werte kann man auf der aufgerufenen ASP-Seite mit Hilfe der Request.QueryString Collection wieder auslesen.

Wenn Werte in Querystring kodiert waren, so liefert Request.Querystring bereits die rückkodierten (also originalen) Werte.

Um das Feld mit dem Feldnamen Nachname in einer ASP-Seite aus dem Querystring zu lesen und in der Variable strNachname zu speichern, benutzt man den folgenden Befehl:

<%
strNachname = Request.QueryString("Nachname")
%>

Analog liest man alle anderen Feldwerte des QueryStrings aus.

Übergeben von Informationen in Formularen

Wenn man Informationen beim Absenden von HTML-Formularen weitergeben will, so hat man grundsätzlich die folgende Möglichkeit.

Man speichert Feldwerte in sogenannten "Hidden Fields" (Verborgenen Feldern) des Formulares. Diese Felder werden dann beim Absenden einfach zusammen mit den anderen Feldwerten verschickt und können genauso wie die anderen Feldwerte ausgelesen werden.

Ein verstecktes Feld in einem Formular hat die folgende HTML-Syntax:

<input type="Hidden" name="Feldname" value="Feldwert">

Hierbei darf der Feldwert nicht verschlüsselt werden. Feldwerte in verborgenen Formularfeldern dürfen keine Zeilenschaltungen enthalten.

Um einen Wert dynamisch einem verborgenen Feld zuzuweisen, fügt man eine ASP-Variable anstelle des Feldwertes ein:

<input type="Hidden" name="Feldname" value="<= strFeldwert %>">

oder:

<%
Response.Write "<input type=""Hidden"" name=""Feldname"" " 
Response.Write "value=""" & strFeldwert & """>"
%>

Übergeben eines Querystrings in einem POST Formular

Ein ausgefuchstes Vorgehen, um Informationen beim Abschicken eines HTML-Formulares von einer ASP-Seite zur nächsten zu transportieren ist wie folgt:

Man benutzt die POST Sendemethode für das Formular und gestaltet das HTML-Formular wie gewohnt. An die Empfängeradresse (im Attribut ACTION) allerdings hängt man einen Querystring mit Feldwerten an:

<form action="Empfaenger.asp?Vorname=Chris" method="POST">
Wert: <input type="Text" name="Wert" value="Ein Wert"><br>
<input type="Submit">
</form>

Natürlich kann man den Querystring wieder dynamisch generieren:

<%
strVorname = "Chris"
%>
<form action="Empfaenger.asp?Vorname=<%= strVorname
%>" method="POST">
...
</form>

Alle Werte des Formulares liest man dann (wegen METHOD="POST") mit der Request.Form Collection aus. Nur die Werte des Querystrings werden mittels Request.QueryString ausgelesen.

Hat das HTML-Formular also einem Querystring in der Action-URL, und benutzt es die POST Übermittlungsmethode, so könnte die Empfängerseite wie folgt aussehen:

<%
strVorname = Request.QueryString("Vorname")
strWert    = Request.Form("Wert")
%>

Schlußbemerkung

Um einzelne Werte von einer ASP-Seite zur nächsten zu übergeben sind die in diesem Artikel beschriebenen Methoden hervorragend geeignet. Will man aber Werte für einen User speichern (ähnlich wie in einer Session Variable), so muß man andere Methoden finden (zum Beispiel das Übergeben einer User ID von einer Seite zur nächsten und dem Speichern der Userdaten in einer Datenbank, die dann mittels User ID wieder ausgelesen werden).

This printed page brought to you by AlphaSierraPapa

Verwandte Artikel

Überprüfen von HTML-Formularen mit ASP
http:/www.aspheute.com/artikel/20000522.htm
Auswertung von HTML Formularen mit ASP
http:/www.aspheute.com/artikel/20000406.htm
Benutzerverwaltung leicht gemacht: Teil 1
http:/www.aspheute.com/artikel/20020429.htm
Session Variablen - Verwendung und Stolpersteine
http:/www.aspheute.com/artikel/20000505.htm

 

©2000-2006 AspHeute.com
Alle Rechte vorbehalten. Der Inhalt dieser Seiten ist urheberrechtlich geschützt.
Eine Übernahme von Texten (auch nur auszugsweise) oder Graphiken bedarf unserer schriftlichen Zustimmung.