麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 編程 > .NET > 正文

ASP.NET中控件的EnableViewState屬性及徹底禁用

2024-07-10 13:30:36
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
如果我們?cè)陂_(kāi)發(fā)Web應(yīng)用程序時(shí),某些控件是不需要接受用戶的操作或只需要接受一次操作的時(shí)候,我們可以將這些控件的EnableViewState屬性改為false,這樣可以優(yōu)化我們的程序,提高網(wǎng)絡(luò)訪問(wèn)的速度。
 

  在ASP.Net中對(duì)各個(gè)WebForm控件引入以前沒(méi)有的EnableViewState屬性。這個(gè)屬性究竟有什么用。我們知道對(duì)于WebForm而言,其代碼是在服務(wù)器端的,以處理客戶端的請(qǐng)求。當(dāng)用戶通過(guò)瀏覽器瀏覽網(wǎng)頁(yè)的時(shí)候,會(huì)對(duì)網(wǎng)頁(yè)進(jìn)行某些操作,比如打開(kāi)新鏈接,或單擊某個(gè)按鈕。在ASP中,這些是通過(guò)腳本語(yǔ)言對(duì)其進(jìn)行處理,之后再傳遞給服務(wù)器端。但是在ASP.NET下,由于采用了code behind技術(shù),在coding的時(shí)候,通常是將以前客戶端完成的工作放到了服務(wù)器端。

  那么,服務(wù)器是怎么知道客戶的操作的呢?比如我在文本框輸入的內(nèi)容,或者單擊了登錄按鈕,服務(wù)器端是怎樣得到這些信息的呢?因?yàn)闆](méi)有這些信息,服務(wù)器端就無(wú)法響應(yīng)客戶的請(qǐng)求。原理就是ASP.NET引用了viewstate的機(jī)制。在服務(wù)器端保存了網(wǎng)頁(yè)各個(gè)控件及頁(yè)面的狀態(tài),這其中包括各個(gè)控件在頁(yè)面上的布局,和他們各自的屬性。這些值就保存在ViewState下。我們可以觀察Aspx頁(yè)面的html源代碼,假設(shè)這個(gè)頁(yè)面上有一個(gè)button按鈕,和一個(gè)listBox控件,html文件如下:

 

復(fù)制代碼代碼如下:
<input type="hidden" name="__VIEWSTATE" value="dDwzODYzNDM5NTU7Oz7FvviJbq45bDa7QJaumIiOhZ8mOQ==" />
<input type="submit" name="Button1" value="Button" id="Button1" style="height:40px;width:96px;Z-INDEX: 101; LEFT: 200px; POSITION: absolute; TOP: 240px" />
<select name="ListBox1" size="4" id="ListBox1" style="width:152px;Z-INDEX: 102; LEFT: 176px; POSITION: absolute; TOP: 120px"></select>

 

  我們它的不同之處,一是少了以前所必須響應(yīng)客戶端事件的腳本語(yǔ)言,一是多了一個(gè)名為”_VIEWSTATE”的屬性。其值是一長(zhǎng)串字符。類型為“hidden”。這個(gè)值記錄的就是各個(gè)控件和頁(yè)面的狀態(tài)信息。當(dāng)用戶對(duì)頁(yè)面進(jìn)行相關(guān)操作的時(shí)候,狀態(tài)值發(fā)生改變,并將改變的值傳遞給服務(wù)器端。服務(wù)器端在比較改變后的狀態(tài)值和初始值之間的區(qū)別,以響應(yīng)具體的請(qǐng)求。

  一旦頁(yè)面的控件很多,這種頻繁的傳遞控件狀態(tài)值對(duì)網(wǎng)絡(luò)的消耗是很大的,因此,ASP.Net提供了EnableViewState屬性,系統(tǒng)默認(rèn)的值為true。當(dāng)設(shè)置為true時(shí),在傳遞狀態(tài)值時(shí)就包括該控件;如果設(shè)置為false,則傳遞狀態(tài)值時(shí)則不包括它。既然狀態(tài)值不包括該控件,則客戶端對(duì)它進(jìn)行的操作,服務(wù)器端是不響應(yīng)的。

我們可以做個(gè)實(shí)驗(yàn),在Button1_Click事件中,編寫(xiě)代碼:

 

復(fù)制代碼代碼如下:
ListBox.Items.Add("客戶端點(diǎn)擊按鈕一次!");

 

  此時(shí)運(yùn)行該應(yīng)用程序,單擊網(wǎng)頁(yè)上的按鈕,在ListBox中會(huì)添加內(nèi)容,不斷地單擊,內(nèi)容則不斷添加。如果我們將ListBox的EnableViewState屬性改為false時(shí),不斷單擊按鈕,則只能添加一次。

  這樣有什么好處呢?如果我們?cè)陂_(kāi)發(fā)Web應(yīng)用程序時(shí),某些控件是不需要接受用戶的操作或只需要接受一次操作的時(shí)候,我們可以將這些控件的EnableViewState屬性改為false,這樣可以優(yōu)化我們的程序,提高網(wǎng)絡(luò)訪問(wèn)的速度。

擴(kuò)展:關(guān)于如何徹底禁用 EnableViewState

網(wǎng)上有人說(shuō)“去Web.config中將enableViewState從全局關(guān)閉”。再打開(kāi)一個(gè)空頁(yè)面看看,是不是清爽了很多。啊?頁(yè)面源代碼中,仍然出現(xiàn)了:

 

復(fù)制代碼代碼如下:
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE2MTY2ODcyMjlkZI7OBu+sMrYke3ELlQKIiNbArzXe" />

 

個(gè)人理解,ASP.NET中的控件為了維持它們的狀態(tài),就必須要用到VIEWSTATE。不過(guò)有個(gè)方法,可以徹底去掉VIEWSTATE,如下:

1.首先是ASP.NET4.0 其他版本未測(cè)試,有興趣的可以測(cè)試一下其他版本。

2.前臺(tái)頁(yè)面顯示數(shù)據(jù)只用Repeater和Literal控件。

3.使用HTML控件,不使用標(biāo)準(zhǔn)控件,基于表單的形式提交數(shù)據(jù),而非ASP.NET中默認(rèn)的事件模式。

以上就是本文的全部?jī)?nèi)容,希望能給大家一個(gè)參考,也希望大家多多支持VeVb武林網(wǎng)。



注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到ASP.NET教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 日韩视频―中文字幕 | av在线免费看片 | 日本一区二区不卡高清 | 国产精品视频一区二区三区四 | 懂色av懂色aⅴ精彩av | 嗯哈~不行好大h双性 | 国产91丝袜在线播放0 | 久久草草影视免费网 | 久久久线视频 | 国产在线免费 | 一级毛片免费高清 | 99国内精品| 亚洲第一综合 | free japan xxxxhdsex69 | 爽毛片 | av中文字幕免费在线观看 | 欧美性生活xxxxx | xnxx18日本 | 久久久一区二区三区四区 | 天天色综合2| 精品亚洲va在线va天堂资源站 | 手机av在线电影 | 日韩99 | 7777欧美| 999精品久久久 | 亚洲第一页在线观看 | 主人在调教室性调教女仆游戏 | 久久久久免费电影 | 双性精h调教灌尿打屁股的文案 | 精品中文字幕视频 | 福利免费观看 | 羞羞网站在线观看入口免费 | 黄色a级片免费观看 | 羞羞视频免费网站男男 | 免费a级毛片永久免费 | 免费看污视频在线观看 | 国产精品午夜一区 | 日韩中字幕 | 中文日韩在线视频 | 国产噜噜噜 | 在线成人影视 |