C# 如何获取构建的、编码的ViewState的值?

C# 如何获取构建的、编码的ViewState的值?,c#,asp.net,C#,Asp.net,我需要获取base64编码的视图状态的表示形式。显然,这在请求生命周期的相当晚的时候才可用,这是可以的 例如,如果页面的输出包括: <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJODU0Njc5MD...==" /> 我需要一种在服务器端获取值的方法“/wEPDwUJODU0Njc5MD…=” 为了澄清,我在呈现页面时需要这个值,而不是在回发时。e、 g.我需要知道发送到客户

我需要获取
base64编码的
视图状态的表示形式
。显然,这在请求生命周期的相当晚的时候才可用,这是可以的

例如,如果页面的输出包括:

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

我需要一种在服务器端获取值的方法
“/wEPDwUJODU0Njc5MD…=”


为了澄清,我在呈现页面时需要这个值,而不是在回发时。e、 g.我需要知道发送到客户机的ViewState值,而不是我从他们那里得到的ViewState。

Rex,我想开始寻找的一个好地方是压缩ViewState的解决方案-在将ViewState发送到客户机并压缩之前,他们在服务器上获取ViewState。那正是你想去的地方

  • (2005年)
  • (2007年)
作者描述了一种覆盖生成ViewState的默认行为的方法,并展示了如何将其保存在服务器会话对象上

在ASP.NET 2.0中,ViewState通过 PageStatePersister的后代 班级。这个类是一个抽象类 用于保存和加载视图状态和 有两个实现的子体 在.Net Framework中属于此类的,名为 HiddenFieldPageStatePersister和 SessionPageStatePersister。默认情况下 使用HiddenFieldPageStatePersister 要保存/加载ViewState信息, 但是我们可以很容易地得到 SessionPageStatePersister正常工作,并且 在会话对象中保存ViewState


虽然我没有测试他的代码,但它似乎正好显示了您想要的:在回发之前,在服务器上访问ViewState代码的方法

我在上面发布的类似文章之后启用了压缩。在应用程序发送ViewState之前访问ViewState的键覆盖了此方法

protected override void SavePageStateToPersistenceMedium(object viewState)
您可以在此覆盖中调用基本方法,然后添加处理ViewState所需的任何附加逻辑