Web
As some of us have found last Friday this article in MSDN about how to store your ViewState in Session is totally wrong. Using the Reflector you can find very easily that ControlState will be erased if you access more than once PageStatePersister.
The correct implementation should be:
PageStatePersister _pers;
protected override PageStatePersister
PageStatePersister
{
get
{
if (_pers == null)
_pers = new
SessionPageStatePersister(this);
return _pers;
}
}
How about overriding SavePageStateToPersistenceMedium / LoadPageStateFromPersistenceMedium?
If you do this you should update your PageStatePersister or you will miss the ControlState once again. Example:
protected override object LoadPageStateFromPersistenceMedium()
{
object state = THESTATE;
if (state is Pair)
{
Pair statePair = (Pair)state;
PageStatePersister.ControlState =...