欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

如何在asp.net中使用ViewState-創(chuàng)新互聯(lián)

今天就跟大家聊聊有關(guān)如何在asp.net中使用ViewState,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

創(chuàng)新互聯(lián)是專(zhuān)業(yè)的榆陽(yáng)網(wǎng)站建設(shè)公司,榆陽(yáng)接單;提供成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、成都外貿(mào)網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專(zhuān)業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行榆陽(yáng)網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專(zhuān)業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專(zhuān)業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!

在web窗體控件設(shè)置為runat = "server",這個(gè)控件會(huì)被附加一個(gè)隱藏的屬性_ViewState,_ViewState存放了所有控件在ViewState中的狀態(tài)值。ViewState是一個(gè)名稱(chēng)/值的對(duì)象集合。當(dāng)請(qǐng)求某個(gè)頁(yè)面時(shí),ASP.NET會(huì)把所有控件的狀態(tài)序列化成一個(gè)字符串,然后作為窗體的隱藏屬性送到客戶(hù)端,當(dāng)客戶(hù)端吧頁(yè)面回傳時(shí),ASP.NET分析回傳的窗體屬性,并賦給控件對(duì)應(yīng)的值。

當(dāng)我們?cè)趯?xiě)一個(gè)asp.net表單時(shí), 一旦標(biāo)明了 form runat=server ,那么,asp.net就會(huì)自動(dòng)在輸出時(shí)給頁(yè)面添加一個(gè)隱藏域


<input type="hidden" name="__VIEWSTATE" value="">

那么,有了這個(gè)隱藏域,頁(yè)面里其他所有的控件的狀態(tài),包括頁(yè)面本身的一些狀態(tài)都會(huì)保存到這個(gè)控件值里面. 每次頁(yè)面提交時(shí)一起提交到后臺(tái),asp.net對(duì)其中的值進(jìn)行解碼,然后輸出時(shí)再根據(jù)這個(gè)值來(lái)恢復(fù)各個(gè)控件的狀態(tài). 我們?cè)倏催@個(gè)控件的value值,它可能類(lèi)似如下的形式:Oz4+O2w8aTwxPjs+O2w8.... 很多人會(huì)認(rèn)為這是加密的信息,其實(shí)不是, ms僅僅是給各個(gè)控件和頁(yè)面的狀態(tài)存入適當(dāng)?shù)膶?duì)象里面,然后把該對(duì)象序列化, 最后再做一次base64編碼,直接賦值給viewstate控件.


一、ViewState的原理

1.瀏覽器請(qǐng)求Default.aspx頁(yè)面


2.在服務(wù)器端 發(fā)現(xiàn)創(chuàng)建的ViewState 這個(gè)時(shí)候 會(huì)自動(dòng)創(chuàng)建一個(gè)名字叫做__VIEWSTATE(雙下滑線 全部是大寫(xiě))的隱藏域 其隱藏域的值經(jīng)過(guò)base64加密以后返回到瀏覽器端這一加密過(guò)程在頁(yè)面生命周期的SaveState事件中的SaveAllState方法中完成

3.當(dāng)瀏覽器提交表單的時(shí)候 將__VIEWSTATE的隱藏域也一起提交到服務(wù)端 這個(gè)時(shí)候 頁(yè)面生命周期的ReadState事件的ReadAllState方法會(huì)將加密后的值反base64解密 最后將值賦值給名字叫做name的ViewState


4.最后來(lái)操作ViewState中的值


二、ViewState的用法:


1.定義ViewState屬性


public int PageCount{
get{return (int)ViewState["PageCount"];}
set{ViewState["PageCount"]=value;}
}

2.使用ViewState的條件


如果要使用ViewState,則在ASPX頁(yè)面中必須要有一個(gè)服務(wù)器端窗體標(biāo)記(<form runat = "server">)。窗體字段是必須的,這樣包含ViewState信息的隱藏字段才能被傳回服務(wù)器。而且,該窗體還必須是服務(wù)器端的窗體,這樣在服務(wù)器上執(zhí)行該頁(yè)面時(shí),ASP.net頁(yè)面框架才能添加隱藏字段。

page的EnableViewState 屬性值為true
控件的EnableViewState 屬性值為 true


3.ViewState需要注意的地方


a. 當(dāng)存在頁(yè)面回傳時(shí),不需要維持控件的值就要把 ViewState 禁止。
b. ViewState的索引是大小寫(xiě)敏感的。
c. ViewState不是跨頁(yè)面的。
d. 為了能保存在 ViewState中,對(duì)象必須是可流化或者定義了 TypeConverter。
e. 控件 TextBox 的 TextMode 屬性設(shè)置為 Password時(shí),它的狀態(tài)將不會(huì)被保存在 ViewState 中,這應(yīng)該是出于安全性的考慮。
f. 在頁(yè)面沒(méi)有回傳或重定向或在回傳中轉(zhuǎn)到(transfer)其他頁(yè)面時(shí)不要使用 ViewState。
g. 在動(dòng)態(tài)建立控件時(shí)要小心它的 ViewState。
h. 當(dāng)禁止一個(gè)程序的 ViewState 時(shí),這個(gè)程序的所有頁(yè)面的 ViewState 也被禁止了。
i. 只有當(dāng)頁(yè)面回傳自身時(shí)ViewState 才是持續(xù)的。


4.設(shè)置ViewState


ViewState可以在控件,頁(yè),程序,全局配置中設(shè)置。缺省情況下 EnableViewState 為 true 。如果要禁止所有頁(yè)面 ViewState 功能,可以在程序配置中把 EnableViewState 設(shè)為 false 。


三、產(chǎn)生的 __VIEWSTATE如圖

如何在asp.net中使用ViewState

使用ViewStateDecoder2(ViewState查看器)來(lái)看一下值

如何在asp.net中使用ViewState

所以ViewState在安全性上面還是比較差,建議不要存放比較機(jī)密和敏感的信息,盡管ViewState可以加密,但是由于ViewState要保存在客戶(hù)端,天生就有安全性的隱患。


四、viewstate與session的對(duì)比


(1) session值是保存在服務(wù)器內(nèi)存上,那么,可以肯定,大量的使用session將導(dǎo)致服務(wù)器負(fù)擔(dān)加重. 而viewstate由于只是將數(shù)據(jù)存入到頁(yè)面隱藏控件里,不再占用服務(wù)器資源,因此, 我們可以將一些需要服務(wù)器"記住"的變量和對(duì)象保存到viewstate里面. 而sesson則只應(yīng)該應(yīng)用在需要跨頁(yè)面且與每個(gè)訪問(wèn)用戶(hù)相關(guān)的變量和對(duì)象存儲(chǔ)上.

(2) session在默認(rèn)情況下20分鐘就過(guò)期,而viewstate則永遠(yuǎn)不會(huì)過(guò)期.

但viewstate并不是能存儲(chǔ)所有的.net類(lèi)型數(shù)據(jù),它僅僅支持String、Integer、Boolean、Array、ArrayList、Hashtable 以及自定義的一些類(lèi)型.

任何事物都有兩面性, 使用viewstate會(huì)增加頁(yè)面html的輸出量,占用更都的帶寬,這一點(diǎn)是需要我們慎重考慮的. 另外, 由于所有的viewstate都是存儲(chǔ)在一個(gè)隱藏域里面,用戶(hù)可以很容易的通過(guò)查看源碼來(lái)看到這個(gè)經(jīng)過(guò)base64編碼的值.然后再經(jīng)過(guò)轉(zhuǎn)換就可以獲取你存儲(chǔ)其中的對(duì)象和變量值。


看完上述內(nèi)容,你們對(duì)如何在asp.net中使用ViewState有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。

分享文章:如何在asp.net中使用ViewState-創(chuàng)新互聯(lián)
文章網(wǎng)址:http://chinadenli.net/article38/hpssp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管App開(kāi)發(fā)小程序開(kāi)發(fā)網(wǎng)站制作云服務(wù)器建站公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司