Dit is een van de naarste zaken die je kunt bedenken bij webdevelopment. In ASP.NET hebben ze dat gelukkig opgelost, in ASP moet je het zelf doen. Er is niet echt een goede oplossing, dwz alle oplossingen vereisen een of andere vorm van ellende die je liever vermijdt.
Ik gebruik voor dit soort dingen OF het session object (wanneer het een klein form betreft) of een dictionairy object in het session object (wanneer het een groot form betreft). Vooral dat laatste is volgens sommigen een slechte oplossing, maar je ontkomt er niet aan, imho.
Wat je doet is: (ik zeg het even simplistisch, veelal initieer je sessionvariables bij het inloggen / attachen van een user)
in de page die voor het form zit (dus waar vandaan je het form benadert) creeer je een boolean variable in je session, bErrorOccured, zet die op false. Creeer een dictionairy object, creeer voor elk formfield een key-value pair met de default value, en plaats het dictionairy object in je sessionobject.
De user komt op het form, je controlleert of er een error heeft plaatsgevonden (door bErrorOccured te testen) en indien NEE kun je de velden in je dictionairy object vullen met data uit een database bv mocht je dat willen.
In je form vul je alle VALUE attributen van de input en select tags met values uit het dictionairy object uit je session. In de process page van het form, vul je alle dictionairy fields met de values die de user heeft ingegeven in het form (request.form().item values). Je controlleert de values. Is er een error, zet de session("bErrorOccured") op true en redirect naar de formpage. Omdat alle values van de user al zijn ingevuld, gaat dit meteen goed. Je kunt code in je form opnemen dat wanneer session("bErrorOccured") op true staat er een errortekst wordt afgedrukt, bv de tekst die je hebt samengesteld in de process page en hebt geplaatst in session("sUserError").
Als alles OK is in je process page, remove je alle fields in het dictionairy object in het session object en removed daarna het dictionairy object. Zet bErrorOccured op false.
Na een aantal van dit soort verschrikkelijke pages te hebben gebouwd (met soms wel 50 inputfields) is dit echt de meest simpele methodiek. Je kunt als alternatief in je session allerlei fields gaan stoppen, maar die zijn niet goed meer te verwijderen. heb je een applicatie met verschillende forms, dan wordt je session al snel vervuild met data. Hidden parameters in een form is ook een optie, maar dit brengt ook een drama met zich mee, want hoe geef je de ingegeven data door aan de formpage vanuit de process page? (tenzij je processcode EN form in dezelfde page stopt maar dat is niet aan te bevelen in asp). ZOals je ziet, iedere ASP developer's favoriete werk, formhandling code