Home » Questions » Computers [ Ask a new question ]

How to get the value of built, encoded ViewState?

How to get the value of built, encoded ViewState?

"I need to grab the base64-encoded representation of the ViewState. Obviously, this would not be available until fairly late in the request lifecycle, which is OK.

For example, if the output of the page includes:

<input type=""hidden"" name=""__VIEWSTATE""
id=""__VIEWSTATE"" value=""/wEPDwUJODU0Njc5MD...=="" />

I need a way on the server-side to get the value ""/wEPDwUJODU0Njc5MD...==""

To clarify, I need this value when the page is being rendered, not on PostBack. e.g. I need to know the ViewState value that is being sent to the client, not the ViewState I'm getting back from them."

Asked by: Guest | Views: 411
Total answers/comments: 3
Guest [Entry]

"Rex, I suspect a good place to start looking is solutions that compress the ViewState -- they're grabbing ViewState on the server before it's sent down to the client and gzipping it. That's exactly where you want to be.

Scott Hanselman on ViewState Compression (2005)
ViewState Compression with System.IO.Compression (2007)"
Guest [Entry]

"See this blog post where the author describes a method for overriding the default behavior for generating the ViewState and instead shows how to save it on the server Session object.

In ASP.NET 2.0, ViewState is saved by
a descendant of PageStatePersister
class. This class is an abstract class
for saving and loading ViewsState and
there are two implemented descendants
of this class in .Net Framework, named
HiddenFieldPageStatePersister and
SessionPageStatePersister. By default
HiddenFieldPageStatePersister is used
to save/load ViewState information,
but we can easily get the
SessionPageStatePersister to work and
save ViewState in Session object.

Although I did not test his code, it seems to show exactly what you want: a way to gain access to ViewState code while still on the server, before postback."
Guest [Entry]

"I enabled compression following similar articles to those posted above. The key to accessing the ViewState before the application sends it was overriding this method;

protected override void SavePageStateToPersistenceMedium(object viewState)

You can call the base method within this override and then add whatever additional logic you require to handle the ViewState."