我需要获取ViewState的base64编码表示。 显然,直到请求生命周期的后期才会出现这种情况,这是可以的。

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

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

我需要在服务器端获取值"/wEPDwUJODU0Njc5MD...=="

为了澄清,我在呈现页面时需要此值,而不是在PostBack上。 例如,我需要知道发送给客户端的ViewState值,而不是我从它们返回的ViewState。

===============>>#1 票数:12 已采纳

Rex,我怀疑一个开始寻找的好地方是压缩ViewState的解决方案 - 他们在将服务器发送到客户端并对其进行压缩之前抓取服务器上的ViewState。 这正是你想成为的地方。

===============>>#2 票数:4

请参阅此博客文章 ,其中作者描述了覆盖生成ViewState的默认行为的方法,而是显示如何将其保存在服务器Session对象上。

在ASP.NET 2.0中,ViewState由PageStatePersister类的后代保存。 此类是用于保存和加载ViewsState的抽象类,在.Net Framework中有两个已实现的此类后代,名为HiddenFieldPageStatePersister和SessionPageStatePersister。 默认情况下,HiddenFieldPageStatePersister用于保存/加载ViewState信息,但我们可以轻松地使SessionPageStatePersister工作并在Session对象中保存ViewState。

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

===============>>#3 票数:2

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

protected override void SavePageStateToPersistenceMedium(object viewState)

您可以在此覆盖中调用基本方法,然后添加处理ViewState所需的任何其他逻辑。

  ask by Rex M translate from so

未解决问题?本站智能推荐:

关注微信公众号