为什么Viewstate只能包含可序列化的对象?

Kar*_*ran 5 c# asp.net

我有一个简单的类,包含一些属性和其他数据.直到我将serializable属性粘贴到类中,我无法将类的对象保存到viewstate中.

为什么Viewstate只能包含可序列化的对象?

Roj*_*uck 6

由于请求的视图状态作为嵌入在生成的页面的HTML中的序列化表示传递回浏览器,因此只有可序列化的对象可以放在其中(否则它可能无法表示它包含的内容).这个视图状态是然后在下一个请求期间反序列化.

http://i.msdn.microsoft.com/dynimg/IC152667.gif给出了一个典型的例子

如果你正在使用POCO将它们标记为可序列化应该是微不足道的.有一个很好的资源来理解viewstate如何工作,它是什么等等:

http://weblogs.asp.net/infinitiesloop/archive/2006/08/03/Truly-Understanding-Viewstate.aspx

它进入了状态的整个生命周期,并从开发人员的角度提供了大部分实现和使用的详细信息.