最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

ASP.NET頁面間數(shù)據(jù)傳遞的幾種方法介紹

 更新時間:2013年05月08日 11:10:47   作者:  
在ASP.NET中,頁面間數(shù)據(jù)傳遞的方法有很多。下面為大家總結(jié)一下,頁面間數(shù)據(jù)傳遞的方法,來看作者的分析。

Web頁面是無狀態(tài)的,服務器對每一次請求都認為來自不同用戶,因此,變量的狀態(tài)在連續(xù)對同一頁面的多次請求之間或在頁面跳轉(zhuǎn)時不會被保留。在用ASP.NET 設計開發(fā)一個Web系統(tǒng)時, 遇到一個重要的問題是如何保證數(shù)據(jù)在頁面間進行正確、安全和高效地傳送,Asp.net 提供了狀態(tài)管理等多種技術來解決保存和傳遞數(shù)據(jù)問題,以下來探討.NET 下的解決此問題的各種方法和各自的適用場合。

一、ASP.NET頁面間數(shù)據(jù)傳遞的各種方法和分析

1.使用Querystring 方法

QueryString 也叫查詢字符串, 這種方法將要傳遞的數(shù)據(jù)附加在網(wǎng)頁地址(URL)后面進行傳遞。如頁面A.aspx 跳轉(zhuǎn)到頁面B.aspx,可以用Request.Redirect("B.aspx?參數(shù)名稱=參數(shù)值")方法,也可以用超鏈接:,頁面跳轉(zhuǎn)后,在目標頁面中可用Ruquest["參數(shù)名稱"]來接收參數(shù)。使用QuerySting 方法的優(yōu)點是實現(xiàn)簡單, 不使用服務器資源;缺點是傳遞的值會顯示在瀏覽器的地址欄上,有被篡改的風險,不能傳遞對象,只有在通過URL 請求頁時查詢字符串才是可行的。

2. 利用隱藏域

隱藏域不會顯示在用戶的瀏覽器中, 一般是在頁面中加入一個隱藏控件, 與服務器進行交互時把值賦給隱藏控件并提交給下一頁面。隱藏域可以是任何存儲在網(wǎng)頁中的與網(wǎng)頁有關的信息的存儲庫。

使用隱藏域存入數(shù)值時用:hidden 控件.value=http://m.fzitv.net/archive/2012/04/06/數(shù)值,取出接收數(shù)值時用:變量=hidden 控件.value。使用隱藏域的優(yōu)點是實現(xiàn)簡單, 隱藏域是標準的HTML 控件,不需要復雜的編程邏輯。隱藏域在頁上存儲和讀取,不需要任何服務器資源,幾乎所有瀏覽器和客戶端設備都支持具有隱藏域的窗體。缺點是存儲結(jié)構(gòu)少,僅僅支持簡單的數(shù)據(jù)結(jié)構(gòu),存儲量少,因為它被存儲在頁面本身,所以無法存儲較大的值,而且大的數(shù)據(jù)量會受到防火墻和代理的阻止。

3. ViewState

ViewState 是由ASP.NET 頁面框架管理的一個隱藏的窗體字段。當ASP.NET 執(zhí)行某個頁面時,該頁面上的ViewState 值和所有控件將被收集并格式化成一個編碼字符串, 然后被分配給隱藏窗體字段的值屬性。

使用ViewState 傳遞數(shù)據(jù)時可用:ViewState [" 變量名"]=數(shù)值,在取出數(shù)據(jù)時用:變量=ViewState["變量名"]。

使用ViewState 的優(yōu)點是:在對同一頁的多個請求間自動保留值,不用服務器端資源,實現(xiàn)簡單,視圖狀態(tài)中的值經(jīng)過哈希計算和壓縮,并且針對Unicode 實現(xiàn)進行編碼,其安全性要高于使用隱藏域;缺點是因為ViewState 存儲在頁面本身,因此如果存儲較大的值,用戶顯示頁和發(fā)送頁時的速度可能會減慢。雖然視圖狀態(tài)以哈希格式存儲數(shù)據(jù),但它仍可以被篡改。

4. 使用Cookie

Cookie 可以在頁面之間傳遞少量信息, 可以存儲在客戶端的文本文件中,也可存儲在客戶端的內(nèi)存中。Cookie 方法適用于存儲少量頁面中經(jīng)常改動的信息, 如為登陸過的網(wǎng)站保存登陸用戶名,為用戶輸入提供方便,還有在一些用戶自定義項目上保存用戶的個性化設置。使用Cookie傳遞數(shù)據(jù)時可用:Response.Cookies["鍵名"]=鍵值;取出數(shù)據(jù)用:變量名=Request.Cookies["鍵名"]。

使用Cookie 優(yōu)點是:Cookie 存儲在客戶端,不使用服務器資源,實現(xiàn)簡單,可配置到期時間。缺點是:可以存儲的數(shù)據(jù)量比較少,由于Cookie 并不被所有的瀏覽器支持,而且還可能被用戶禁止或刪除,所以不能用于保存關鍵數(shù)據(jù)。另外,Cookie 保存的形式是簡單的明文文本,在它里面不宜保存敏感的、未加密的
數(shù)據(jù)。

5. 使用Application 變量

使用Application 變量也可以實現(xiàn)頁面間的傳值,Application變量是全局性的,所有用戶共享一個Application 變量,一旦定義,它將影響到程序的所有部分。如果想在整個應用程序范圍使用某個變量值Application 對象將是最佳的選擇。存入數(shù)據(jù)時, 把值添加到Application 變量里:Application["變量名"]=數(shù)值;取出數(shù)據(jù)用:變量=Application["變量名"];在不需要使用該Application 時,要顯式清除它:Application["量名"]=null。

Application 優(yōu)點:易于使用,全局范圍。可供應用程序中的所有頁來訪問。缺點:若保存數(shù)據(jù)的服務器端進程被損壞(如因服務器崩潰、升級或關閉而損壞),那么數(shù)據(jù)就會丟失,所以利用Application 一定要有保底的策略;占用服務器端的內(nèi)存,這可能會影響服務器的性能以及應用程序的可伸縮性。

6. 使用Session 變量

Session 對象可以用來存儲需要維護的指定對話的信息,不同的客戶端生成不同的Session 對象。Session 用于存儲特定于單獨會話的短期信息。Session 的使用方法和格式與Application 相同。

優(yōu)點:易于實現(xiàn),并且提供較高的安全性和持久性,可以應對IIS 重啟和輔助進程重啟,可在多進程中使用。缺點是耗用服務器端的內(nèi)存。所以不要存儲大量的信息。Session 最常見的用途是與Cookie 一起向Web 應用程序提供用戶標識功能,Session也可用于不支持Cookie 的瀏覽器。但是,使用無Cookie 的Session 需要將會話標識符放置在查詢字符串中,同樣會遇到本文在查詢字符串一節(jié)中陳述的安全問題。

7. 使用類的靜態(tài)屬性

這種方法是利用類的靜態(tài)屬性實現(xiàn)兩個頁面間的值傳。定義一個包含靜態(tài)屬性的類;將要傳送的值賦給靜態(tài)屬性;目標頁面中可以通過靜態(tài)屬性獲得源頁面中要傳的值。優(yōu)點是可以方便傳送多個數(shù)據(jù),缺點是需要額外編程,增加程序設計的工作量,占用服務器內(nèi)存。

8. 使用Server.Transfer

通過Server.Transfer 方法把執(zhí)行流程從當前的ASPX 文件轉(zhuǎn)到同一服務器上的另一個ASPX 頁面的同時,可保留表單數(shù)據(jù)或查詢字符串,做法是把該方法的第二個參數(shù)設置成True,在第一個頁面用Server.Transfer("目標頁面名.aspx",true);目標頁面取出數(shù)據(jù)用:Ruquest.Form["控件名稱"]或Ruquest.QueryString["控件名稱"]。Asp.net2.0 中還可以這樣來用,代碼如下:

PreviousPage pg1;
pg1=(PreviousPage)Context.Handler;
Response.Write(pg1.Name);
說明: 此段代碼用在目標頁面中取出傳遞的值,Previous- Page 是原頁面的類名,Name 是在原頁面定義的屬性, 需要傳遞 的數(shù)據(jù)存入到此屬性中。

使用這種方法, 需要寫一些代碼以創(chuàng)建一些屬性以便可以 在另一個頁面訪問它, 可以在另一個頁面以對象屬性的方式來 存取數(shù)值,這個方法在頁面間值傳遞中是特別有用的,這種方法 不但簡潔,同時又是面向?qū)ο蟮摹?/P>

9. Cache

Cache 具有強大的數(shù)據(jù)操作功能, 以鍵值對集合的形式存 儲數(shù)據(jù),可以通過指定關鍵字來插入和檢索數(shù)據(jù)項。它的基于依 賴性的終止功能, 使它能夠精確控制如何并及時更新和消除緩 存中的數(shù)據(jù)。它可以內(nèi)部進行鎖定管理,不需要象Application 對象那樣使用Lock()和Unlock()方法進行串行化管理。缺點是使用 方法較復雜,使用不當反而降低性能.

二、不同頁面跳轉(zhuǎn)情況下可采用的傳值方法

情況一:源頁面可以跳轉(zhuǎn)到目標頁面,源頁面?zhèn)鬟f數(shù)據(jù)給目標頁面

使用查詢字符串, 將少量信息從一頁傳輸?shù)搅硪豁撘约安?存在安全性問題時,是一個簡單常用的方法;使用Server.Transfer方法,可傳遞表單數(shù)據(jù)或查詢字符串到另一個頁面,還可以 保存初始頁的HttpContext, 當目標頁和源頁面在同一個服務器 時,可以用此方法。

情況二:頁面?zhèn)鬟f數(shù)值給自身頁面

即在對同一頁的多個請求間保留值, ViewState 屬性可提供具有基本安全性的功能。也可用隱藏域,存儲少量回發(fā)到自身或另一頁的頁信息時使用,不考慮安全性問題時使用。

情況三:源頁面?zhèn)鬟f數(shù)值給目標頁面,而源頁面不能直接連接到目標頁面。

有多個方法,具體用哪個要看具體情況。

Application: 存儲由多個用戶使用且更改不頻繁的全局信息,此時安全性不成為問題。不要存儲大量的信息。Session:存儲特定于單獨會話的短期信息,并且需要較高的安全性。不要在會話狀態(tài)中存儲大量的信息。需要注意,將為應用程序中每一會話的生存期創(chuàng)建并維護會話狀態(tài)對象。在支持許多用戶的應用程序中, 這可能會占用大量服務器資源并影響可縮放性。

Cookie: 當您需要在客戶端存儲少量信息以及不存在安全性問題時使用。類的靜態(tài)屬性,方便傳送多個數(shù)據(jù)。

Cache :對象用于單個用戶、一組用戶或所有的用戶。可以為多個請求長時間、高效率的保存數(shù)據(jù)。上述幾個方法,不僅用于情況三, 前面兩種情況都可以使用,只是沒有必要時盡量少用,否則會造成資源浪費或增加程序的復雜性。

相關文章

  • asp.net替換和恢復html特殊字符

    asp.net替換和恢復html特殊字符

    替換html中的特殊字符需要進行替換的文本。替換完的文本。
    2008-05-05
  • DropDownList綁定選擇數(shù)據(jù)報錯提示異常解決方案

    DropDownList綁定選擇數(shù)據(jù)報錯提示異常解決方案

    DropDownList控件在綁定選擇數(shù)據(jù)時提示報錯異常詳細信息為:有一個無效 SelectedValue,因為它不在項目列表中,應該有很多新手朋友們遇到過吧,本文將給予解決方法,感興趣的朋友可以了解下,希望本對你有所幫助
    2013-01-01
  • ASP.NET中RadioButtonList綁定后臺數(shù)據(jù)后觸發(fā)點擊事件

    ASP.NET中RadioButtonList綁定后臺數(shù)據(jù)后觸發(fā)點擊事件

    這篇文章主要介紹了ASP.NET中RadioButtonList綁定后臺數(shù)據(jù)后觸發(fā)點擊事件的相關資料,感興趣的小伙伴們可以參考一下
    2016-05-05
  • c#中兩種不同的存儲過程調(diào)用與比較

    c#中兩種不同的存儲過程調(diào)用與比較

    存儲過程的調(diào)用在B/S系統(tǒng)中用的很多。傳統(tǒng)的調(diào)用方法不僅速度慢,而且代碼會隨著存儲過程的增多不斷膨脹,難以維護。新的方法在一定程度上解決了這些問題
    2012-12-12
  • 簡單談談.NET Core跨平臺開發(fā)

    簡單談談.NET Core跨平臺開發(fā)

    本文給大家詳細介紹了如何使用.NET Core進行跨平臺開發(fā),包含簡單的環(huán)境架設以及配置,以及使用vs進行編譯運行項目和注意事項,有需要的小伙伴可以參考下
    2016-07-07
  • ASP.NET Core MVC中過濾器工作原理介紹

    ASP.NET Core MVC中過濾器工作原理介紹

    這篇文章介紹了ASP.NET Core MVC中過濾器的工作原理,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-02-02
  • .NET 緩存模塊設計實踐

    .NET 緩存模塊設計實踐

    這篇承接上篇對緩存的概念,框架上的理解,講講緩存模塊設計實踐過程,感興趣的小伙伴們可以參考一下
    2016-08-08
  • ASP.net全局程序文件Global.asax用法分析

    ASP.net全局程序文件Global.asax用法分析

    這篇文章主要介紹了ASP.net全局程序文件Global.asax用法,較為詳細分析了Global.asax文件中幾個常見選項的含義及用法,需要的朋友可以參考下
    2014-10-10
  • AspNetCore&MassTransit?Courier實現(xiàn)分布式事務的詳細過程

    AspNetCore&MassTransit?Courier實現(xiàn)分布式事務的詳細過程

    MassTransit?Courier是一種用于創(chuàng)建和執(zhí)行帶有故障補償?shù)姆植际绞聞盏臋C制,它可以用于滿足本地事務的需求,也可以在分布式系統(tǒng)中實現(xiàn)分布式事務,這篇文章主要介紹了AspNetCore&MassTransit?Courier實現(xiàn)分布式事務,需要的朋友可以參考下
    2022-10-10
  • ASP.NET?MVC打印表格并實現(xiàn)部分視圖表格打印

    ASP.NET?MVC打印表格并實現(xiàn)部分視圖表格打印

    這篇文章介紹了ASP.NET?MVC打印表格并實現(xiàn)部分視圖表格打印的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-08-08

最新評論

巫溪县| 旌德县| 秭归县| 永宁县| 东阿县| 府谷县| 庆阳市| 左权县| 师宗县| 鄄城县| 永平县| 淮南市| 西畴县| 曲周县| 凉城县| 衡南县| 金沙县| 普兰县| 大安市| 醴陵市| 芜湖市| 湘西| 安西县| 宁城县| 漳平市| 宜黄县| 米脂县| 敦化市| 德清县| 遂宁市| 米脂县| 安岳县| 修水县| 明溪县| 四会市| 鱼台县| 西畴县| 如皋市| 鲁甸县| 神农架林区| 蒙山县|