1

如果我有一个 session["test"] = some "hashtable" 对象,并且我将此会话变量分配给一个视图状态对象 Viewstate["test"],那么当会话变量过期或更改时会发生什么?

视图状态变量是只存储对它的引用还是它自己的副本?

如果 session["test"] 被重新分配或设置为 null,视图状态变量是否也被重新分配/设置为 null?

4

1 回答 1

1

它们是分开的,因为 ViewState 由标记中的隐藏字段支持。会话存储在内存中,具有明确的到期时间。ViewState 不受此约束,因为它是从每个请求/响应的隐藏字段中序列化/反序列化的。

只需在您的页面上查看源代码,您会发现一个名为ViewStateIt's base 64 编码的隐藏字段,但如果您对其进行解码,您将看到明文形式的内容。

于 2013-10-03T00:10:00.120 回答