原文連結:https://www.cnblogs.com/wangqilong/p/12540397.html
https://www.cnblogs.com/firstyi/archive/2007/11/20/965957.html
ViewState的使用比較簡單,一兩句話就可以了。
賦值: ViewState[key] = value;
取值:value = ViewState[key];
最主要的作用就是可以在當前頁面儲存值,ASP.NET的頁面狀態維護就是使用ViewState來實現的,基本上每一個ASPX頁面都可以看到如下類似的html程式碼:
< input type ="hidden" name ="__VIEWSTATE" id ="__VIEWSTATE" value ="/wEPDwUKMTkwNjc4NTIwMWRkyv4ncofW5vaWXdXRtXfXn3RYQR4=" />
也就是說ViewState中的值實際上都是透過一個hidden來儲存的,hidden的name為 __VIEWSTATE,那麼如果頁面上有另外一個控制元件的名稱也叫: __VIEWSTATE的話,會導致頁面出錯。
其實在我們進行頁面開發或者進行自定義控制元件開發的時候,都可以使用ViewState,很方便。
ViewState是ASP.NET中特有的,相對於Session來說,它儲存的值只能在當前頁面使用,並且儲存的只能是已經序列化的類,比如.NET中的strings, integers, Booleans, arrays, ArrayList, hashtable,DataTable等。
那麼如何將自定義的類放入ViewState中呢,這個就涉及到如下所說的序列化的問題了:
序列化簡單來說就是把一個物件轉化成一種可以持久儲存的資料,當下次需要使用時再把之前儲存的資料反序列化成一個物件。
當然在.NET中提供了簡便的方法進行序列化的操作。