【張逸】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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Android控制元件的fitSystemWindows屬性Android控制元件Windows
- js 改變 控制元件的屬性值JS控制元件
- 使用屬性Props完成一張卡片
- 觸發器中控制元件依賴屬性繫結失效觸發器控制元件
- Python中的屬性Python
- Swift 中的屬性Swift
- SAP UI5 SimpleForm 控制元件的 adjustLabelSpan 屬性UIORM控制元件
- 以太坊中的全域性屬性
- WPF一個簡單的屬性編輯控制元件控制元件
- Spring的BeanFactoryPostProcessor中屬性SpringBean
- vue中的computed屬性Vue
- delphi 常用控制元件屬性設定說明控制元件
- 讀《我和Labview》7控制元件的區域性變數和屬性View控制元件變數
- SAP UI5的控制元件DatePicker的DateFormat屬性詳解UI控制元件ORM
- WPF中繼承ItemsControl子類控制元件資料模板獲取選中屬性中繼繼承控制元件
- ASP.NET Core預設容器實現Controller的屬性注入ASP.NETController
- css屬性與js中style物件的屬性對應表CSSJS物件
- SQL Server 中的 ACID 屬性SQLServer
- CSS中content屬性的妙用CSS
- C#中屬性的解析C#
- 理解 Kotlin 中的屬性(property)Kotlin
- 協議中的私有屬性協議
- python中的屬性認識Python
- 4. 自定義控制元件(4) --- 自定義屬性控制元件
- Qt編寫自定義控制元件屬性設計器QT控制元件
- Rust中的derive屬性詳解Rust
- 淺談 Swift 中的屬性(PropertySwift
- css3中的animation屬性CSSS3
- package.json中的重要屬性PackageJSON
- ASP.NET Core如何禁用模型驗證(或者從模型狀態中移除某些屬性)?ASP.NET模型
- html表單控制元件禁用屬性readonly VS disabled介紹HTML控制元件
- 【WEB自動化測試之控制元件定位】基於HTML5控制元件的唯一控制元件屬性定位Web控制元件HTML
- Python 類的屬性與例項屬性Python
- python中__setattr__的屬性設定Python
- (八)Mybatis當中#{}常用屬性的用法MyBatis
- vue例項中watch屬性的使用Vue
- jQuery中判斷input的disabled屬性jQuery
- CMake 屬性之全域性屬性
- html中Position屬性值介紹和position屬性四種用法HTML