當前位置:編程學習大全網 - 源碼下載 - 用asp.net做的的頁面上有個hidden裏面很多代碼是什麽意思

用asp.net做的的頁面上有個hidden裏面很多代碼是什麽意思

由於HTTP連接屬於無狀態的,每次頁面請求都無法記錄上次請求頁面的信息。

那麽要保存上次請求頁面上控件的值,也就是頁面刷新後,填寫的值不變,比方在textbox填了個‘a’,頁面刷新後還是'a',.NET框架為實現這種機制,於是就用到了viewstate視圖狀態來保存這些控件的值,

那麽將所有控件的值存在什麽地方呢?也就是妳看見的進過序列化後都存在隱藏域裏input type="hidden" name="__VIEWSTATE",然後服務器接收後會反序列化這些隱藏域的值然後又從新給這些控件賦值,從而頁面刷新後還能記錄上次請求時候的所有控件的值。

以上為基本原理。

現在搞點實際的,VIEWSTATE是個極其浪費性能的東西,因為每次都要反序列化與序列化,如果妳的VIEWSTATE保存了太多的值,那麽將導致網頁速度載入過慢,所以妳的網站網頁打開超費勁。

這個時候該怎麽辦?

壹:關閉VIEWSTATE視圖狀態,每個服務器控件都會有個

EnableViewState的屬性,這個屬性也就是是否要使用視圖狀態記錄值

設置為true為記錄,設置為false不記錄,可以做個測試放個textbox設置為EnableViewState為false,然後輸入個值,然後再用按鈕去刷新頁面,那麽textbox又會為空。這個時候可以將頁面上刷新後不需要記錄狀態的都設置為flase,比方通常的查詢,每次查詢都需要重新綁定數據,這個時候可以設為false來提高性能,這也就是大家常說用來顯示數據的控件,都很喜歡用repeater而不用gridview或datagrid,因為repeater不會輸出過多的VIEWSTATE,完全自己手寫代碼,而gridview將產生大量的VIEWSTATE,雖然封裝的很好,用起來很方便,有得必用失,極其浪費性能,自己做個測試查看源文件對比下VIEWSTATE就曉得了。

二:通過壓縮工具對VIEWSTATE進行壓縮,有的地方也沒辦法,壹定要用到VIEWSTATE,那麽也只能去壓縮他了。

希望對妳有幫助,嘿嘿都是自己寫的,喝口水先,我就曉得這2種方法,如有找到更多方式,麻煩發個短消息給我。

  • 上一篇:用firefox看書,不支持方向鍵翻頁?
  • 下一篇:源代碼開始
  • copyright 2024編程學習大全網