Formulardaten merken

Hallo Experten,

folgendes Problem:
habe eine ASP-Webanwendung mit vielen umfangreichen Eingabemasken (Formularen).
Gibt man in einer Maske einen fehlerhaften Wert an oder lässt ein Pflichtfeld unausgefüllt, wird eine Fehlerseite aufgerufen, die einen „Back“-Button enthält. Mit Klick auf diesen „Back“-Button kommt man wieder zur Eingabemaske zurück.
Nun sind natürlich die Eingaben, die man schon gemacht hatte weg!

Was gibt es für Lösungen, sich diese gemachten Eingaben zu merken?
Das komplette Formular auf der Fehlerseite nochmal aufzubauen und bei „Back“ wieder zurückzuposten wäre ziemlich viel Arbeit!!!

Gibt es Alternativen? (QueryString fällt wegen zu großer Datenmengen auch flach!)

Grüße, piranja

Hallo,

wo speicherst denn Du Deine Daten ab? Wenn Du nicht die Möglichkeit hast, den Querystring wieder mit zurückzuschicken, dann würde ich die Querydaten in einem File ablegen, dass Du dann verarbeiten kannst, egal ob die Daten nun korrekt waren oder nicht.

Gruß
Christian

Hi Christian,

wo speicherst denn Du Deine Daten ab?

Wenn es keinen Fehler gibt, geht’s sofort auf eine Aktionsseite, wo die Daten mit request.form ausgelesen werden.
Aber wenn es einen Fehler gibt, wird auf die Fehlerseite verzweigt, wo die Daten dann verloren gehen. Ich müsste dort die gleichen Formularelemente nochmal als „hidden“ haben, um sie zu speichern. Das ist aber ziemlich aufwändig bei vielen umfangreichen Formularen …

Wenn Du nicht die
Möglichkeit hast, den Querystring wieder mit zurückzuschicken,
dann würde ich die Querydaten in einem File ablegen, dass Du
dann verarbeiten kannst, egal ob die Daten nun korrekt waren
oder nicht.

Hm, ein File …?
Wie genau kann ich mir das vorstellen?

Grüße, piranja

Aber wenn es einen Fehler gibt, wird auf die Fehlerseite
verzweigt, wo die Daten dann verloren gehen. Ich müsste dort
die gleichen Formularelemente nochmal als „hidden“ haben, um
sie zu speichern. Das ist aber ziemlich aufwändig bei vielen
umfangreichen Formularen …

Naja aufwendig?

finde ich nicht gerade aufwendig und müsste eigentlich funktionieren (ich habe es aus einem meiner Scripts etwas abgeändert, da hier die Formulardaten gleich in Memoryvariablen umgesetzt werden.

Gruß
Christian

1 Like

Oups vergessen :smile:
Du musst dann in Deinem Originalformular ebenfalls verarbeiten. Ich poste nochmal mein Script:

' \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
' getting the QueryString and Form values
' \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
Dim strFormEntry

For Each strFormEntry In Request.QueryString
 If ( Left( Right( strFormEntry, 2 ), 1 ) "." ) Then
 Execute( "form\_" & strFormEntry & "=Trim( Request.QueryString( strFormEntry ) )" )
 Else
 Execute( "form\_" & Left( strFormEntry, Len( strFormEntry )-2 ) & " = True" )
 End If
Next


' watch out: post parameter overwrite a search parameter in location
For Each strFormEntry In Request.Form
 If ( Left( Right( strFormEntry, 2 ), 1 ) "." ) Then
 Execute( "form\_" & strFormEntry & "=Trim( Request.Form( strFormEntry ) )" )
 Else
 Execute( "form\_" & Left( strFormEntry, Len( strFormEntry )-2 ) & " = True" )
 End If
Next

Set strFormEntry = Nothing

Im Formular kommt halt dann beispielsweise

Hoffe erstmal geholfen, bzw. einen Denkanstoss gegeben zu haben.

Gruß
Christian

Hm, hast Recht - ist ja ganz easy … :wink:
Vielen Dank!!!

LG, piranja

Naja aufwendig?

finde ich nicht gerade
aufwendig und müsste eigentlich funktionieren (ich habe es aus
einem meiner Scripts etwas abgeändert, da hier die
Formulardaten gleich in Memoryvariablen umgesetzt werden.

Gruß
Christian