Dialogsteuerung - Steuerung von Arbeitsschritten

Bei der Eingabe von Daten muss der Benutzer dasselbe Programm in mehreren Schritten rufen. Zum Beispiel:
  • erster Aufruf – Server schickt leeres Formular
  • Daten sind eingegeben - Daten werden geprüft
  • Daten wurden korrigiert - Daten sind richtig und werden abgespeichert.
Das Problem liegt darin, dass man sich auf dem Internetserver nicht merken kann, bei welchem Schritt man gerade ist – das Programm hat kein Gedächtnis.
Manchmal kann man am augenbicklichen Inhalt der Formular-Felder erkennen, um welchen Arbeitsschritt es sich gerade handelt.
Um das Problem generell zu lösen, gibt man dem Formular ein unsichtbares Feld mit (<INPUT TYPE=HIDDEN>). Da dieses Feld unverändert hin- und hergeschickt wird, kann man es von der Server-Seite aus zum Aufbewahren von Informationen verwenden.

Ein Programmbeispiel:

<% Option Explicit
'in diesem Beispiel gibt es ein verborgenes Eingabefeld mit dem Namen "Zustand" 
'und auch eine Variable mit dem gleichen Namen.
'Beim ersten Aufruf gibt es noch keine Eingabefelder – deshalb liefert der Befehl
'Request.Form("name eines feldes") immer eine leere Zeichenkette "".
	dim Zustand
	Zustand=Request.Form("Zustand")
	select case Zustand
		case ""                Zustand="ErstAufruf"
		case "ErstAufruf"      Zustand="DatenEingegeben"
		case "DatenEingegeben" Zustand="DatenKorrigiert"
		case "DatenKorrigiert" Zustand="DatenAkzeptiert"
	end select
	if Zustand="ErstAufruf" then
		'Formular-Felder auf Anfangswerte setzen – z.B. alle leer
	end if
	if Zustand="DatenEingegeben" then
		'Hier Daten des Formulars auf Fehler prüfen
		'Falls Fehler gefunden, Zustand wieder auf "ErstAufruf" zurücksetzen
	end if
	if Zustand="DatenKorrigiert" then
		'Daten noch einmal anzeigen und fragen, ob sie so gespeichert werden sollen
	end if
	if Zustand="DatenAkzeptiert" then
		'Daten speichern und an Benutzer eine Bestätigung schicken
	end if

'Jetzt folgen die HTML-Befehle, die je nach dem Wert von Zustand anders aussehen können
<HTML>
....
....
'eins der Eingabefelder sieht so aus:
<INPUT TYPE="HIDDEN" NAME="Zustand" VALUE="<%=Zustand%>">
....
</HTML>