2012年7月18日 星期三

{Note}ViewState架構

正常Web 應用程式沒有狀態,也就是說,當User key in的資料,傳到伺服器,伺服器回傳後,User key in的資料就不會被保存,因為當HTTP發出一個Request時,會建立Web網頁類別個體,而每一個Resuest 都是一個新的個體,所以不會被保存;.net針對目前的.net架構設計一個狀態管理機制,將User key in的資料,保存在編碼後的ViewState中,以保存Web Control上的值

Clinet State分類:
View State,Control State,Hidden Fields,Cookie,Query Strings
Server State分類:
Application State,Session State,Profile Properties


ViewState:預設是啟用的,當網頁Post back 時,即為轉為一個Hidden 類型(<input type=hidden>);而他會將畫面上所有控制項的值都存成View State,如是 Gridview等類型的值對網頁來說是無效的,卻仍
然會被轉為ViewState,造成ViewState很龐大,傳輸網頁相對較慢
關閉方式:
Control的ViewState
<asp:Gridview id="abc" runat="server" EnableViewState="false" />

Page的ViewState
<%@ Page EnableViewState="false" %>

WebConfig的ViewState
<pages enableViewState="false" />

參考資料:
http://www.dotblogs.com.tw/marcus116/archive/2011/05/29/26428.aspx