When a new web request arrives, the ASPX engine create a completely new instance of the Page subclass to handle it. This means that such pages are inherently stateless. Any normal statefulness has either derives from the ViewState of the page's controls (stored the POST fields) or through programmer coding, using one of the provided state "dictionaries".
PagePersister defines an extended attribute that is used to decorate fields that should be initialized or persisted. This off-loads the persistence issue to a simple body of code that walks the type information, performing persistence as necessary.
The result is that when a web request comes in on a "post back", the newly minted Page object will appear identical to the last page object that handled the prior request. In effect, the programmer, after having declared the persistence attributes, can ignore the statelessness of ASPX.
Start by looking at the PagePersister class and reading the remarks. Then look at the PersistPage class for a self-verifying example of its use. Finally, check the Global class to see how the persistence operations are "wired up" to application and session handling.