Sometimes when you're collecting data via a web form, it's nice to split
the form up into smaller pieces so that you don't overwhelm the users who
are filling them out. That's the idea behind wizards. If you break long
and/or complex tasks into smaller, easy to manage pieces, users are less
intimidated by them.
The main problem with using this approach on the web is that in order to do it you need to pass the
data from page to page. You can use cookies or sessions, but they both have
their problems. So what's to be done? Instead
of storing the data in a cookie, session, or database, this sample stores the values
from other pages as hidden form fields. This allows the user to eaisly bounce back and forth
from page to page without losing the data that they had previously entered.
The only real downside to this approach is that it increases the size of
the HTML being sent back and forth between the server and the browser. For most
implementations the increase doesn't result in any noticable difference. I only mention it
in case you're planning on using it in a situation where users are entering an extremely large amount
of text or are working over very slow connections.
I should also mention that I've included no form validation in this sample and haven't done
much to make it look pretty either. Both are simply to try and keep things simple. There's no reason
you can't do them, I just didn't want to make the code any more complex then I had to.