如何获得构建,编码ViewState的价值?

我需要获取ViewState的base64编码表示。很明显,只有在请求生命周期的相当晚的时候才可以使用,这是可以的。

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

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

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

为了澄清,当页面被渲染时,我需要这个值,而不是在回发。例如我需要知道发送给客户端的ViewState值,而不是我从他们那里得到的ViewState。

0
额外 编辑
意见: 1

7 答案

可以认为非周期性的倾斜(有时候是有用的方式)就像叠片的叶片;所讨论的群体(如艾米莉的答案)就是分层的整体类群。

There is a standard description of the Penrose tiles in this way; think of an irrational plane (i.e. an $R^2$) in $R^n$ for some $n>2$, and consider the set of 2-dimensional faces of the $Z^n$ lattice in $R^n$ that intersect a (uniform) thickened tubular neighborhood of your plane. Project each such 2-dimensional face perpendicularly down to your plane; the result is an aperiodic tiling. If the irrational plane happens to be chosen with extra symmetries (eg it could be an eigenspace of a finite order element in $GL(n,Z)$) one gets quite a tile set with extra "partial symmetries". The Penrose tiling is of this kind: think of $Z/5Z$ permuting the coordinate axes in $R^5$. This fixes the vector $(1,1,1,1,1)$ and has two perpendicular irrational eigenspaces on which it acts as an order 5 rotation; translates of these eigenspaces give rise to the "standard" Penrose tilings.

在这种情况下,分层是通过斜率等于$ R ^ 2 $的斜率的平面的“非理性叶理”(并且人们可以很容易地想到泛化)。

13
额外

在我被指出的“什么是群体”的答案中 阿兰 温斯坦的非常好的通知文章

他给出的第一个例子(甚至在一个groupoid的定义之前) 是关于分段,以及groupoid如何包含更多的信息 自同构群。这解决了你的问题 维基百科至少没有举例说明。

8
额外

Bill Thurston和JH Conway认为,对于周期性的分段比较,他们认为最好是比对称分组考虑分段的偏移量:这是对平面对称组和其他一些分类的方法:Conway和Burgiel以及Goodman-Strauss采用美丽的物体的对称性,我想说,它会非常光滑。

我不知道这是否会经历非周期性的分段。

6
额外

这让我想起了几年前我通过 Lorenzo Sadun 看到的一次演讲,米不知道为什么。 (当我考虑拼字游戏时,我比起你听起来更加组合化。)你可以看看一些Sadun的论文或他最近发表的演讲稿 拓扑平铺空间

3
额外
我同意,你的问题不是一个组合问题。
额外 作者 Robert Höglund,
我不介意组合思考,但我通常认为,如果你想要某种分类结果,更容易采取不同的方法
额外 作者 bugmagnet,
感谢参考文献,我不确定它是否在寻找,但至少有它有趣的材料可以投放到我的阅读队列中
额外 作者 bugmagnet,

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

0
额外

看到这个博客post ,作者描述了一种用于覆盖生成ViewState的默认行为的方法,并展示了如何将其保存在服务器Session对象上。

在ASP.NET 2.0中,ViewState被保存   PageStatePersister的后代   类。这个类是一个抽象类   用于保存和加载ViewsState和   有两个实施的后代   这个类在.Net框架中命名   HiddenFieldPageStatePersister和   SessionPageStatePersister。默认   使用HiddenFieldPageStatePersister   保存/加载ViewState信息,   但我们可以轻松获得   SessionPageStatePersister工作和   保存会话对象中的ViewState。

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

0
额外

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

protected override void SavePageStateToPersistenceMedium(object viewState)

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

0
额外