asp.net的ViewState學習

來源:互聯網
上載者:User

這些還是前輩們都研究爛的東東,我也只是COPY他們的成果,好了,什麼也不說了,先來一張表:

頁面事件 ViewState相關操作
PreInit 設定控制項靜態屬性
Init 執行TrackViewState方法(開啟ViewState跟蹤)
InitComplete  
 

從_ViewState隱藏欄位更新控制項屬性,因為控制項屬性大部分實際儲存在ViewState中,所以也可以說是恢複/更新ViewState,並對

恢複/更新過的ViewSate標記為Dirty

  從回傳的PostData值中更新控制項屬性
PreLoad  
Load  
  再次從回傳的PostDataw值中更新控制項屬性
LoadComplete  
PreSender  
PreSenderComplete  
  執行SaveViewState方法(所有標記為Dirty的ViewState被儲存下來)
Sender  
Unload  

 

 

還是說下自己的心得吧。為什麼我們這麼關心ViewState,能方便我們編程,這隻是其一,其二就是如果我們不注意,ViewState也許會我們的應用程式帶來負面影響。最主要的就是使頁面的體積“無限增大”。而實際上這有很多都是可以避免的!

在ViewState的生命週期中(請允許我這麼說),哪一階段最值得注意?我認為是執行TrackViewState方法的時候。當執行了這個方法,就意味著在今後任意對控制項狀態的修改都會被ViewState記錄,而這也是頁面體積“無限增大”的源泉。

ViewState的理念是什嗎?是變,任何變化都逃不出ViewState的眼睛!

如果我們想編出一個效能優秀的作品,一定不會放過對ViewState的最佳化,特別是對那些待用資料,它們僅僅只是起顯示作用,並不會得到修改。所以,針對以上兩個特點,我們就有兩個解決方案:要麼不用ViewState,要麼在TrackViewState方法執行之前對值進行變化。

我們在對頁面進行編程前,需要對頁面進行一次分析,哪些資料是僅供顯示的待用資料,哪些資料是需要使用者來完成互動的動態資料。我們要做的,僅是讓ViewState記錄那些進行互動的狀態就可以了。

當然,上面說的實在太理想化,但這卻是我們做Asp.net的原則之一,儘力往上面靠就好了。

看過一個數字,說ViewState在頁面中不要超過30%,或者不要超過30K,不然效能一般不太好。我雖然對這個數字不太感冒,但是儘力縮小ViewState,卻是我們每個Asp.net程式員義不容辭的責任啊!

 

參考的文章:

1.對viewstates的理解更深入了(1)

http://blog.csdn.net/orichisonic/archive/2008/10/15/3078994.aspx

2.對viewstates的理解更深入了(2)

http://blog.csdn.net/orichisonic/archive/2008/10/15/3078996.aspx

3. 真正理解ASP.NET的ViewState (Truly Understanding ViewState)     很有名的一篇譯文

http://blog.csdn.net/vividboy/archive/2008/01/28/2069347.aspx

4.ASP.NET開發人員必讀──關於ViewState和動態控制項的文章

http://blog.joycode.com/saucer/archive/2006/09/28/84379.aspx

 

其實對於這些比較底層的研究,還是外國人來的深入與具體。我在上面貼的幾個引用,裡面也太量引用了老外的文章,有實力的一定要看看,不會有壞處的!

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.