西西軟件下載最安全的下載網(wǎng)站、值得信賴(lài)的軟件下載站!

首頁(yè)編程開(kāi)發(fā)ASP.NET → ASP.NET編程中Web頁(yè)面幾種狀態(tài)管理總結(jié)

ASP.NET編程中Web頁(yè)面幾種狀態(tài)管理總結(jié)

相關(guān)軟件相關(guān)文章發(fā)表評(píng)論 來(lái)源:西西整理時(shí)間:2012/11/21 8:45:07字體大。A-A+

作者:西西點(diǎn)擊:0次評(píng)論:0次標(biāo)簽: Cookie Session

  • 類(lèi)型:站長(zhǎng)工具大。5KB語(yǔ)言:中文 評(píng)分:7.5
  • 標(biāo)簽:
立即下載

由于HTTP協(xié)議的無(wú)狀態(tài)特性,導(dǎo)致在ASP.NET編程中,每個(gè)請(qǐng)求都會(huì)在服務(wù)端從頭到執(zhí)行一次管線(xiàn)過(guò)程, 對(duì)于ASP.NET頁(yè)面來(lái)說(shuō),Page對(duì)象都會(huì)重新創(chuàng)建,所有控件以及內(nèi)容都會(huì)重新生成, 因此,如果希望上一次的頁(yè)面狀態(tài)能夠在后續(xù)頁(yè)面中保留,則必需引入狀態(tài)管理功能。

ASP.NET為了實(shí)現(xiàn)狀態(tài)管理功能,提供了8種方法,可幫助我們?cè)陧?yè)面之間或者整個(gè)用戶(hù)會(huì)話(huà)期間保留狀態(tài)數(shù)據(jù)。 這些方法分為二類(lèi):視圖狀態(tài)、控件狀態(tài)、隱藏域、Cookie 和查詢(xún)字符串會(huì)以不同方式將數(shù)據(jù)發(fā)送到客戶(hù)端上。 而應(yīng)用程序狀態(tài)、會(huì)話(huà)狀態(tài)和配置文件屬性(Profile)則會(huì)將數(shù)據(jù)存儲(chǔ)到服務(wù)端。 雖然每種方法都有不同的優(yōu)點(diǎn)和缺點(diǎn),對(duì)于小的項(xiàng)目來(lái)說(shuō),可以選擇自己認(rèn)為最容易使用的方法, 然而,對(duì)于有著較高要求的程序,尤其是對(duì)于性能與擴(kuò)展性比較關(guān)注的程序來(lái)說(shuō), 選擇不同的方法最終導(dǎo)致的差別可能就非常大了。

在這篇博客中,我將談?wù)勛约簩?duì)ASP.NET狀態(tài)管理方面的一些看法。
注意:本文的觀點(diǎn)可能并不合適開(kāi)發(fā)小型項(xiàng)目,因?yàn)槲谊P(guān)注的不是易用性。

hidden-input( 隱藏域

hidden-input 這個(gè)名字我是取的,表示所有type="hidden"的input標(biāo)簽元素。 在中文版的MSDN中,也稱(chēng)之為 隱藏域 。 hidden-input通常存在于HTML表單之內(nèi),它不會(huì)顯示到頁(yè)面中, 但可以隨表單一起提交,因此,經(jīng)常用于維護(hù)當(dāng)前頁(yè)面的相關(guān)狀態(tài),在服務(wù)端我們可以使用Request.Form[]來(lái)訪問(wèn)這些數(shù)據(jù)。

一般說(shuō)來(lái),我通常使用hidden-input來(lái)保存一些中間結(jié)果,用于在多次提交中維持一系列狀態(tài), 或者用它來(lái)保存一些固定參數(shù)用來(lái)提交給其它頁(yè)面(或網(wǎng)站)。 在這些場(chǎng)景中,我不希望用戶(hù)看到這些數(shù)據(jù),因此,使用hidden-input是比較方便的。

關(guān)于表單的更多介紹可參考我的博客:細(xì)說(shuō) Form (表單)

在ASP.NET WebForm框架中,我們可以使用HiddenField控件來(lái)創(chuàng)建一個(gè)hidden-input控件,并可以在服務(wù)端操作它, 還可以直接以手寫(xiě)的方式使用隱藏域,例如:

<input type="hidden" name="hidden-1" value="aaaaaaa" />
<input type="hidden" name="hidden-2" value="bbbbbbb" />
<input type="hidden" name="hidden-3" value="ccccccc" />

另外,我們還可以調(diào)用ClientScript.RegisterHiddenField()方法來(lái)創(chuàng)建隱藏域:

ClientScript.RegisterHiddenField("hidden-4", "ddddddddd");

輸出結(jié)果:

<input type="hidden" name="hidden-4" id="hidden-4" value="ddddddddd" />

這三種方法對(duì)于生成的HTML代碼來(lái)說(shuō),主要差別在于它們出現(xiàn)位置不同:
1. HiddenField控件:由HiddenField的出現(xiàn)位置來(lái)決定(在form內(nèi)部)。
2. RegisterHiddenField方法:在form標(biāo)簽的開(kāi)頭位置。
3. hidden-input:你寫(xiě)在哪里就是哪里。

優(yōu)點(diǎn):
1. 不需要任何服務(wù)器資源:隱藏域隨頁(yè)面一起發(fā)送到客戶(hù)端。
2. 廣泛的支持:幾乎所有瀏覽器和客戶(hù)端設(shè)備都支持具有隱藏域的表單。
3. 實(shí)現(xiàn)簡(jiǎn)單:隱藏域是標(biāo)準(zhǔn)的 HTML 控件,不需要復(fù)雜的編程邏輯。

缺點(diǎn):
1. 不能在多頁(yè)面跳轉(zhuǎn)之間維持狀態(tài)。
2. 用戶(hù)可見(jiàn),保存敏感數(shù)據(jù)時(shí)需要加密。

    相關(guān)評(píng)論

    閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過(guò)難過(guò)
    • 5 囧
    • 3 圍觀圍觀
    • 2 無(wú)聊無(wú)聊

    熱門(mén)評(píng)論

    最新評(píng)論

    發(fā)表評(píng)論 查看所有評(píng)論(0)

    昵稱(chēng):
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過(guò)審核才能顯示)
    推薦文章

    沒(méi)有數(shù)據(jù)

    最新文章
      沒(méi)有數(shù)據(jù)