亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來到思海網(wǎng)絡(luò),我們將竭誠為您提供優(yōu)質(zhì)的服務(wù)! 誠征網(wǎng)絡(luò)推廣 | 網(wǎng)站備案 | 幫助中心 | 軟件下載 | 購買流程 | 付款方式 | 聯(lián)系我們 [ 會(huì)員登錄/注冊 ]
促銷推廣
客服中心
業(yè)務(wù)咨詢
有事點(diǎn)擊這里…  531199185
有事點(diǎn)擊這里…  61352289
點(diǎn)擊這里給我發(fā)消息  81721488
有事點(diǎn)擊這里…  376585780
有事點(diǎn)擊這里…  872642803
有事點(diǎn)擊這里…  459248018
有事點(diǎn)擊這里…  61352288
有事點(diǎn)擊這里…  380791050
技術(shù)支持
有事點(diǎn)擊這里…  714236853
有事點(diǎn)擊這里…  719304487
有事點(diǎn)擊這里…  1208894568
有事點(diǎn)擊這里…  61352289
在線客服
有事點(diǎn)擊這里…  531199185
有事點(diǎn)擊這里…  61352288
有事點(diǎn)擊這里…  983054746
有事點(diǎn)擊這里…  893984210
當(dāng)前位置:首頁 >> 技術(shù)文章 >> 文章瀏覽
技術(shù)文章

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

添加時(shí)間:2014-8-11 19:05:06  添加: 思海網(wǎng)絡(luò) 

本文我們將討論的是ASP.NET頁面間數(shù)據(jù)傳遞的幾種方法,對此希望能幫助大家正確的理解ASP.NET頁面間數(shù)據(jù)傳遞的用處以及便利性。

0、引言

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

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

1.1 使用Querystring 方法

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

1.2 利用隱藏域

隱藏域不會(huì)顯示在用戶的瀏覽器中, 一般是在頁面中加入一個(gè)隱藏控件, 與服務(wù)器進(jìn)行交互時(shí)把值賦給隱藏控件并提交給下一頁面。隱藏域可以是任何存儲在網(wǎng)頁中的與網(wǎng)頁有關(guān)的信息的存儲庫。使用隱藏域存入數(shù)值時(shí)用:hidden 控件.value=數(shù)值,取出接收數(shù)值時(shí)用:變量=hidden 控件.value。使用隱藏域的優(yōu)點(diǎn)是實(shí)現(xiàn)簡單, 隱藏域是標(biāo)準(zhǔn)的HTML 控件,不需要復(fù)雜的編程邏輯。隱藏域在頁上存儲和讀取,不需要任何服務(wù)器資源,幾乎所有瀏覽器和客戶端設(shè)備都支持具有隱藏域的窗體。缺點(diǎn)是存儲結(jié)構(gòu)少,僅僅支持簡單的數(shù)據(jù)結(jié)構(gòu),存儲量少,因?yàn)樗淮鎯υ陧撁姹旧恚詿o法存儲較大的值,而且大的數(shù)據(jù)量會(huì)受到防火墻和代理的阻止。

1.3 ViewState

ViewState 是由ASP.NET 頁面框架管理的一個(gè)隱藏的窗體字段。當(dāng)ASP.NET 執(zhí)行某個(gè)頁面時(shí),該頁面上的ViewState 值和所有控件將被收集并格式化成一個(gè)編碼字符串, 然后被分配給隱藏窗體字段的值屬性。使用ViewState 傳遞數(shù)據(jù)時(shí)可用:ViewState [" 變量名"]=數(shù)值,在取出數(shù)據(jù)時(shí)用:變量=ViewState["變量名"]。使用ViewState 的優(yōu)點(diǎn)是:在對同一頁的多個(gè)請求間自動(dòng)保留值,不用服務(wù)器端資源,實(shí)現(xiàn)簡單,視圖狀態(tài)中的值經(jīng)過哈希計(jì)算和壓縮,并且針對Unicode 實(shí)現(xiàn)進(jìn)行編碼,其安全性要高于使用隱藏域;缺點(diǎn)是因?yàn)閂iewState 存儲在頁面本身,因此如果 
存儲較大的值,用戶顯示頁和發(fā)送頁時(shí)的速度可能會(huì)減慢。雖然視圖狀態(tài)以哈希格式存儲數(shù)據(jù),但它仍可以被篡改。

1.4 使用Cookie

Cookie 可以在頁面之間傳遞少量信息, 可以存儲在客戶端的文本文件中,也可存儲在客戶端的內(nèi)存中。Cookie 方法適用于存儲少量頁面中經(jīng)常改動(dòng)的信息, 如為登陸過的網(wǎng)站保存登陸用戶名,為用戶輸入提供方便,還有在一些用戶自定義項(xiàng)目上保存用戶的個(gè)性化設(shè)置。使用Cookie傳遞數(shù)據(jù)時(shí)可用:Response.Cookies["鍵名"]=鍵值;取出數(shù)據(jù)用:變量名=Request.Cookies["鍵名"]。使用Cookie 優(yōu)點(diǎn)是:Cookie 存儲在客戶端, 不使用服務(wù)器資源,實(shí)現(xiàn)簡單,可配置到期時(shí)間。缺點(diǎn)是:可以存儲的數(shù)據(jù)量比較少,由于Cookie 并不被所有的瀏覽器支持,而且還可能被用戶禁止或刪除,所以不能用于保存關(guān)鍵數(shù)據(jù)。另外,Cookie 保存的形式是簡單的明文文本,在它里面不宜保存敏感的、未加密的 
數(shù)據(jù)。

1.5 使用Application 變量

使用Application 變量也可以實(shí)現(xiàn)頁面間的傳值,Application變量是全局性的,所有用戶共享一個(gè)Application 變量,一旦定義,它將影響到程序的所有部分。如果想在整個(gè)應(yīng)用程序范圍使用某個(gè)變量值A(chǔ)pplication 對象將是最佳的選擇。存入數(shù)據(jù)時(shí), 把值添加到Application 變量里:Application["變量名"]=數(shù)值;取出數(shù)據(jù)用:變量=Application["變量名"];在不需要使用該Application 時(shí),要顯式清除它:Application["量名"]=null。 
Application 優(yōu)點(diǎn):易于使用,全局范圍。可供應(yīng)用程序中的所有頁來訪問。缺點(diǎn):若保存數(shù)據(jù)的服務(wù)器端進(jìn)程被損壞(如因服務(wù)器崩潰、升級或關(guān)閉而損壞),那么數(shù)據(jù)就會(huì)丟失,所以利用Application 一定要有保底的策略;占用服務(wù)器端的內(nèi)存,這可能會(huì)影響服務(wù)器的性能以及應(yīng)用程序的可伸縮性。

1.6 使用Session 變量 

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

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

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

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

1.8 使用Server.Transfer 

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

PreviousPage pg1;
pg1=(PreviousPage)Context.Handler;
Response.Write(pg1.Name);

說明: 此段代碼用在目標(biāo)頁面中取出傳遞的值,Previous- Page 是原頁面的類名,Name 是在原頁面定義的屬性, 需要傳遞 的數(shù)據(jù)存入到此屬性中。 
使用這種方法, 需要寫一些代碼以創(chuàng)建一些屬性以便可以 在另一個(gè)頁面訪問它, 可以在另一個(gè)頁面以對象屬性的方式來 存取數(shù)值,這個(gè)方法在頁面間值傳遞中是特別有用的,這種方法 不但簡潔,同時(shí)又是面向?qū)ο蟮摹?/p>

1.9 Cache 

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

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

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

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

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

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

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

有多個(gè)方法,具體用哪個(gè)要看具體情況。

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

Cookie: 當(dāng)您需要在客戶端存儲少量信息以及不存在安全性問題時(shí)使用。類的靜態(tài)屬性,方便傳送多個(gè)數(shù)據(jù)。原文:http://www.cnblogs.com/gsanidt/archive/2009/12/15/1624553.html

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

關(guān)鍵字:ASP.NET、數(shù)據(jù)、服務(wù)器

分享到:

頂部 】 【 關(guān)閉
版權(quán)所有:佛山思海電腦網(wǎng)絡(luò)有限公司 ©1998-2024 All Rights Reserved.
聯(lián)系電話:(0757)22630313、22633833
中華人民共和國增值電信業(yè)務(wù)經(jīng)營許可證: 粵B1.B2-20030321 備案號:粵B2-20030321-1
網(wǎng)站公安備案編號:44060602000007 交互式欄目專項(xiàng)備案編號:200303DD003  
察察 工商 網(wǎng)安 舉報(bào)有獎(jiǎng)  警警  手機(jī)打開網(wǎng)站