<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        asp.net中ViewState的用法詳解

        來源:懂視網 責編:小采 時間:2020-11-27 22:38:11
        文檔

        asp.net中ViewState的用法詳解

        asp.net中ViewState的用法詳解:在web窗體控件設置為runat = server,這個控件會被附加一個隱藏的屬性_ViewState,_ViewState存放了所有控件在ViewState中的狀態值。ViewState是一個名稱/值的對象集合。當請求某個頁面時,ASP.NET會把所有控件的狀態序列化成一個字符串,然后作為窗體
        推薦度:
        導讀asp.net中ViewState的用法詳解:在web窗體控件設置為runat = server,這個控件會被附加一個隱藏的屬性_ViewState,_ViewState存放了所有控件在ViewState中的狀態值。ViewState是一個名稱/值的對象集合。當請求某個頁面時,ASP.NET會把所有控件的狀態序列化成一個字符串,然后作為窗體

        在web窗體控件設置為runat = "server",這個控件會被附加一個隱藏的屬性_ViewState,_ViewState存放了所有控件在ViewState中的狀態值。ViewState是一個名稱/值的對象集合。當請求某個頁面時,ASP.NET會把所有控件的狀態序列化成一個字符串,然后作為窗體的隱藏屬性送到客戶端,當客戶端吧頁面回傳時,ASP.NET分析回傳的窗體屬性,并賦給控件對應的值。

        當我們在寫一個asp.net表單時, 一旦標明了 form runat=server ,那么,asp.net就會自動在輸出時給頁面添加一個隱藏域

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

        那么,有了這個隱藏域,頁面里其他所有的控件的狀態,包括頁面本身的一些狀態都會保存到這個控件值里面. 每次頁面提交時一起提交到后臺,asp.net對其中的值進行解碼,然后輸出時再根據這個值來恢復各個控件的狀態. 我們再看這個控件的value值,它可能類似如下的形式:Oz4+O2w8aTwxPjs+O2w8.... 很多人會認為這是加密的信息,其實不是, ms僅僅是給各個控件和頁面的狀態存入適當的對象里面,然后把該對象序列化, 最后再做一次base編碼,直接賦值給viewstate控件.

        一、ViewState的原理

        1.瀏覽器請求Default.aspx頁面

        2.在服務器端 發現創建的ViewState 這個時候 會自動創建一個名字叫做__VIEWSTATE(雙下滑線 全部是大寫)的隱藏域 其隱藏域的值經過base加密以后返回到瀏覽器端這一加密過程在頁面生命周期的SaveState事件中的SaveAllState方法中完成

        3.當瀏覽器提交表單的時候 將__VIEWSTATE的隱藏域也一起提交到服務端 這個時候 頁面生命周期的ReadState事件的ReadAllState方法會將加密后的值反base解密 最后將值賦值給名字叫做name的ViewState

        4.最后來操作ViewState中的值

        二、ViewState的用法:

        1.定義ViewState屬性

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

        2.使用ViewState的條件

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

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

        3.ViewState需要注意的地方

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

        4.設置ViewState

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

        三、產生的 __VIEWSTATE如圖

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

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

        四、viewstate與session的對比

        (1) session值是保存在服務器內存上,那么,可以肯定,大量的使用session將導致服務器負擔加重. 而viewstate由于只是將數據存入到頁面隱藏控件里,不再占用服務器資源,因此, 我們可以將一些需要服務器"記住"的變量和對象保存到viewstate里面. 而sesson則只應該應用在需要跨頁面且與每個訪問用戶相關的變量和對象存儲上.

        (2) session在默認情況下20分鐘就過期,而viewstate則永遠不會過期.

        但viewstate并不是能存儲所有的.net類型數據,它僅僅支持String、Integer、Boolean、Array、ArrayList、Hashtable 以及自定義的一些類型.

        任何事物都有兩面性, 使用viewstate會增加頁面html的輸出量,占用更都的帶寬,這一點是需要我們慎重考慮的. 另外, 由于所有的viewstate都是存儲在一個隱藏域里面,用戶可以很容易的通過查看源碼來看到這個經過base編碼的值.然后再經過轉換就可以獲取你存儲其中的對象和變量值。

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        asp.net中ViewState的用法詳解

        asp.net中ViewState的用法詳解:在web窗體控件設置為runat = server,這個控件會被附加一個隱藏的屬性_ViewState,_ViewState存放了所有控件在ViewState中的狀態值。ViewState是一個名稱/值的對象集合。當請求某個頁面時,ASP.NET會把所有控件的狀態序列化成一個字符串,然后作為窗體
        推薦度:
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top 主站蜘蛛池模板: 一二三四视频在线观看中文版免费 | 亚洲综合av永久无码精品一区二区| 国产亚洲精品VA片在线播放| 色偷偷亚洲男人天堂| 四虎永久在线精品免费网址| 亚洲AV无码乱码在线观看代蜜桃 | 在线观看日本免费a∨视频| 亚洲成a人片7777| 色屁屁www影院免费观看视频| 色猫咪免费人成网站在线观看| 日日夜夜精品免费视频| 亚洲成av人在线观看网站| 亚洲?V无码乱码国产精品| 国产免费一区二区三区免费视频| 亚洲精品无码AV人在线播放| 久久精品视频免费播放| 亚洲国产精品免费在线观看| 两个人的视频高清在线观看免费| 日韩欧美亚洲国产精品字幕久久久| 国产一级一片免费播放i| 亚洲精品在线播放视频| 女人被男人桶得好爽免费视频 | 国产最新凸凹视频免费| 国产特黄特色的大片观看免费视频| 国产亚洲精品a在线观看app| 1000部拍拍拍18勿入免费视频软件 | 国产精品亚洲精品日韩已满| 免费无遮挡无码永久视频| 亚洲人成人网站色www| 99爱视频99爱在线观看免费| 亚洲中文字幕久久精品蜜桃| 亚洲Av无码乱码在线观看性色 | 亚洲第一综合天堂另类专| 国产亚洲精品无码拍拍拍色欲| 午夜免费啪视频在线观看| 亚洲综合激情五月色一区| 最新亚洲成av人免费看| 亚洲免费中文字幕| 日韩少妇内射免费播放| 2022年亚洲午夜一区二区福利| 在线免费观看国产视频|