【張逸】ASP.Net中控制元件的EnableViewState屬性
在ASP.Net中對各個WebForm控制元件引入以前沒有的EnableViewState屬性。這個屬性究竟有什麼用。我們知道對於WebForm而言,其程式碼是在伺服器端的,以處理客戶端的請求。當使用者通過瀏覽器瀏覽網頁的時候,會對網頁進行某些操作,比如開啟新連結,或單擊某個按鈕。在ASP中,這些是通過指令碼語言對其進行處理,之後再傳遞給伺服器端。但是在ASP.NET下,由於採用了code behind技術,在coding的時候,通常是將以前客戶端完成的工作放到了伺服器端。
那麼,伺服器是怎麼知道客戶的操作的呢?比如我在文字框輸入的內容,或者單擊了登入按鈕,伺服器端是怎樣得到這些資訊的呢?因為沒有這些資訊,伺服器端就無法響應客戶的請求。原理就是ASP.NET引用了viewstate的機制。在伺服器端儲存了網頁各個控制元件及頁面的狀態,這其中包括各個控制元件在頁面上的佈局,和他們各自的屬性。這些值就儲存在ViewState下。我們可以觀察Aspx頁面的html原始碼,假設這個頁面上有一個button按鈕,和一個listBox控制元件,html檔案如下:
我們它的不同之處,一是少了以前所必須響應客戶端事件的指令碼語言,一是多了一個名為”_VIEWSTATE”的屬性。其值是一長串字元。型別為“hidden”。這個值記錄的就是各個控制元件和頁面的狀態資訊。當使用者對頁面進行相關操作的時候,狀態值發生改變,並將改變的值傳遞給伺服器端。伺服器端在比較改變後的狀態值和初始值之間的區別,以響應具體的請求。
一旦頁面的控制元件很多,這種頻繁的傳遞控制元件狀態值對網路的消耗是很大的,因此,ASP.Net提供了EnableViewState屬性,系統預設的值為true。當設定為true時,在傳遞狀態值時就包括該控制元件;如果設定為false,則傳遞狀態值時則不包括它。既然狀態值不包括該控制元件,則客戶端對它進行的操作,伺服器端是不響應的。
我們可以做個實驗,在Button1_Click事件中,編寫程式碼:
ListBox.Items.Add(”客戶端點選按鈕一次!”);
此時執行該應用程式,單擊網頁上的按鈕,在ListBox中會新增內容,不斷地單擊,內容則不斷新增。如果我們將ListBox的EnableViewState屬性改為false時,不斷單擊按鈕,則只能新增一次。
這樣有什麼好處呢?如果我們在開發Web應用程式時,某些控制元件是不需要接受使用者的操作或只需要接受一次操作的時候,我們可以將這些控制元件的EnableViewState屬性改為false,這樣可以優化我們的程式,提高網路訪問的速度。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-343456/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【張逸】ASP.NET:效能與快取ASP.NET快取
- 【張逸】ASP.NET:效能與快取[續]ASP.NET快取
- 張逸:程式碼的體格
- ASP.NET中的DataGrid的屬性 (轉)ASP.NET
- ASP.NET控制元件屬性:ID、ClientID 和 UniqueID 的區別ASP.NET控制元件client
- EasyUI 中 DataGrid 控制元件 列 如何繫結物件中的屬性UI控制元件物件
- Android控制元件的fitSystemWindows屬性Android控制元件Windows
- ASP.NET CausesValidation 屬性ASP.NET
- 張逸:程式碼最大的敵人就是體格
- js 改變 控制元件的屬性值JS控制元件
- android之 控制元件常用的屬性Android控制元件
- .net自定義控制元件下拉的屬性控制元件
- ANDROID 控制元件常用屬性Android控制元件
- 使用屬性Props完成一張卡片
- 【Clingingboy】asp.net 簡單介紹自定義控制元件簡單屬性和複雜屬性ASP.NET控制元件
- Swift 中的屬性Swift
- asp.net的發展與其屬性ASP.NET
- 【dinghao】asp.net控制元件開發(一)簡單屬性、檢視狀態、控制元件狀態ASP.NET控制元件
- Xamarin.Forms XAML控制元件的公共屬性ORM控制元件
- 以太坊中的全域性屬性
- Css 中的position屬性CSS
- css中的display屬性CSS
- CSS中的margin屬性CSS
- ITEM中的屬性控制
- C# 自定義屬性在propertyGrid控制元件中顯示C#控制元件
- 用DataBindings屬性繫結控制元件的值控制元件
- 載入flash必備的ShockwaveFlash控制元件屬性控制元件
- ExtJs控制元件屬性配置詳細JS控制元件
- css3中的zoom屬性以及jquery中css()方法操作元素的屬性CSSS3OOMjQuery
- javascript獲取物件直接量中的屬性和屬性值JavaScript物件
- css屬性與js中style物件的屬性對應表CSSJS物件
- 協議中的私有屬性協議
- C#中屬性的解析C#
- vue中的computed屬性Vue
- 富文字中的段落屬性
- Python 中的 property 屬性Python
- 張逸: ThoughtWorks(中國)程式設計師讀書雷達程式設計師
- dev Gridcontrol控制元件屬性部分dev控制元件