ASP.NET 的 ViewState

ViewState其實只是很普通的東西~~
簡單的說他就是 form 裡面的 hidden 欄位而已~~
現在在 asp.net 中,它已經被物件化了
我們只要這麼寫
ViewState("TestMe")="Nothing, just hidden."
在輸出的時候,它就會自動被輸出為
<form>
<input type="hidden" name="TestMe" value="!@#$!#@$"/>
</form>
這樣子的 html 碼.
而不需要像以往一樣自行去維護 hidden 欄位的值.
上面 TestMe 欄位的 value 我是隨便打的,事實上 asp.net 會對它作 base64 的編碼,以防止被別人看見~如果你覺得 base64 編碼太過於簡陋,你也可以選擇其他的編碼方式如: 3DES, MD5…等方式來作編碼,以防止被解析出來.
設定ViewState的方法有三種:
1.該目錄下的所有網頁都使用:這需要在 web.config 檔案中設定
<Pages EnableViewState="false"…/>
(p.s. web.config 檔案,事實上,JSP也有類似的用法,你可以互相對照一下)
2.在單一網頁中指定:這需要在每個 .aspx 前面加上
<%@Page EnableViewState="false"…%>
3.在每一個 control 指定:這需要設定該 control 的 EnableViewState 屬性,以 datagrid control 來說,用法如下:
<asp:datagrid EnableViewState="false…/>
如果你想設定編碼方式的話,則需要多加上
<%@Page EnableViewStateMAC=true %><machineKey validation="MD5"/>或<machineKey
validation="3DES"/>
雖然ViewState的內容可以編碼,但是建議還是不要把一些安全性的資料放在這裡.此外,利用這樣子的技術,有個缺點,就是會使得網頁傳遞的時候變慢,因為 form 的內容變多了~
如果想了解更多,請到這裡.