ASP.NET中的ViewState

來源:互聯網
上載者:User

updated on 2007/07/19

什麼是ViewState,它起到了什麼作用呢?簡單的講,ViewState維持了Web Page的UI狀態。

在ASP.NET誕生之前,要保持住同一個web頁面回傳後(假設不跳轉到其它頁面)裡面各個html元素的值,需要程式員自己顯示得做一些工作,將各個html元素的值顯示得賦值。而ASP.NET卻能自動得做這些繁雜的工作。這些都要歸功於ViewState,那麼ViewState具體是怎麼工作的呢?

其實也沒什麼,仔細研究一下就會發現,原來ASP.NET自己管理著一個隱藏html元素: <input type="hidden" name="__VIEWSTATE">。當執行一個asp.net頁面時,這個頁面的ViewState值以及所有控制項的ViewState值將被編碼成一個String串賦值給上述的隱藏元素,作為html的一部分發給用戶端瀏覽器。當用戶端提交頁面後,這個ViewState串(有可能會在用戶端改變)又會重新傳回,在伺服器端,ASP.NET分析處理這個ViewState串,以重新取代各個控制項的值,從而會“智能”得將用戶端的操作元素值“記”下來。

當然ASP.NET也給我們工程師留出來一個介面來改變某個控制項的ViewState值,或根據需要自己可以存入一個ViewState,例如:

ViewState["SortField"] = value;

ViewState和Session的區別是:

  Session State ViewState
是否佔用Server資源
是否逾時 是 – 預設20分鐘
是否儲存所有的.NET類型 否,只限於: strings, integers, Booleans, arrays, ArrayList, hashtable, custom TypeConverters
是否增加html的傳輸量

在以下幾種情況中可以不使用ViewState:

Web Pages Controls
  • Web頁面不需要回傳
  • 不需要處理某個控制項的事件
  • 控制項沒有需要動態設定的屬性或動態綁定資料的屬性

推薦兩篇關於ViewState的技術文章:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaspnet/html/asp11222001.asp
http://msdn.microsoft.com/msdnmag/issues/03/02/CuttingEdge/
和著名部落格
http://weblogs.asp.net/infinitiesloop/archive/2006/08/03/Truly-Understanding-Viewstate.aspx

另外本人做了一個關於asp.net狀態管理機制的ppt,可以從這裡下載查看

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.