Is there anyway to do a postback with a new querystring that doesn't reset all of the controls on a page to their defaults? I have a page named "default.aspx" with several checkbox controls on it. I can check them all I want and they will remain persistent (meaning they keep their checked or unchecked state) on postbacks to "default.aspx". However, if I postback to "default.aspx?page=2", the controls all revert to their default state. Is there a way to keep them from doing that?
The thing to remember here is that every time you do a new postback, you're working with a brand new instance of your page class. The old instance was discarded the moment it was sent to the web browser. With that in mind, the fact that state can be persisted between postbacks at all is pretty amazing. There's a lot that has to happen to make it all sync up okay.
One of those things is ViewState. ViewState is a special hidden input element in your page's form. When you request your page with a new query string, you're no longer POSTing that viewstate field from the form. You're not really doing a postback at all anymore: it's a request for a whole new page. There is no POST data from any form, and therefore the ViewState data is missing and ASP.Net has no clue about anything you might have done previously.
How are you posting back when you change the querystring? If you're using ASP.net checkbox controls (with runat="server") then they should be persisted with the viewstate.
Joel is correct that a new instance of the Page class is created, but that is the purpose of Viewstate, to overcome the stateless nature of HTTP.