1.Querystring
Querystring也叫查詢字符串,這種頁面間傳遞數據是利用網頁地址URL。如果要從A頁面跳轉到B頁面,則可以用Request.Redirect(”B.aspx?參數名=參數值”);在頁面跳轉后用Ruquest[“參數名”]來接收參數。
這種方法使用簡單,不用服務器資源。但是很容易被篡改且不能傳遞對象,只有在通過URL 請求頁時查詢字符串才是可行的。
2.ViewState
這是ASP.NET框架管理的一個隱藏窗體字段,使用時可用ViewState[“變量名”]=數值,取數據的時候用:變量 = ViewState[“變量名”];
ViewState在同一個頁面多個請求的時候回自動保留值,不用服務器資源,用哈希格式存儲;因ViewState存於頁面中,當存儲較大的值時,用戶頁面速度變慢。雖然是哈希值存儲,但任然會出現被惡意篡改。
3.Cookie
Cookie使用 Response.Cookie[“鍵名”] = 值;取數據 變量 = Request.Cookie[“鍵名”]。
Cookie存儲在客戶端中,適合存儲經常改動比較少的信息,不用服務器資源,可配置到期時間。但Cookie可能在客戶端被禁用或刪除,因為是明文的文本,不宜存儲敏感的和未加密的數據。
4.Application
Application是一全局性的變量,所有用戶共享一個Application變量。使用Application[“變量名”]= 值,取值:變量 = Application [“變量名”],清除它用:Application[“變量名”] = null;
Application可給程序中所有的頁面訪問,但如服務器發生故障數據就會丟失。
5.Session
Session的使用方法和Application一樣。Session對象用來存儲會話信息,不同客戶端生成的Session不同,用於存在特定於單獨會話的短息信息。易於實現,並且提供較高的安全性和持久性,可以應對IIS 重啟和輔助進程重啟,可在多進程中使用。缺點是耗用服務器端的內存。所以不要存儲大量的信息。Session 最常見的用途是與Cookie 一起向Web 應用程序提供用戶標識功能,Session也可用於不支持Cookie 的瀏覽器。但是,使用無Cookie 的Session 需要將會話標識符放置在查詢字符串中,同樣會遇到本文在查詢字符串一節中陳述的安全問題。
6.Cache
Cache 具有強大的數據操作功能, 以鍵值對集合的形式存 儲數據,可以通過指定關鍵字來插入和檢索數據項。它的基於依 賴性的終止功能, 使它能夠精確控制如何並及時更新和消除緩 存中的數據。它可以內部進行鎖定管理,不需要象Application 對象那樣使用Lock()和Unlock()方法進行串行化管理。缺點是使用 方法較復雜
7.Server.Transfer
不同情況下使用方法:
情況一:源頁面可以跳轉到目標頁面,源頁面傳遞數據給目標頁面
使用查詢字符串, 將少量信息從一頁傳輸到另一頁以及不 存在安全性問題時,是一個簡單常用的方法;使用Server.Transfer方法,可傳遞表單數據或查詢字符串到另一個頁面,還可以 保存初始頁的HttpContext, 當目標頁和源頁面在同一個服務器 時,可以用此方法。
情況二:頁面傳遞數值給自身頁面
即在對同一頁的多個請求間保留值, ViewState 屬性可提供具有基本安全性的功能。也可用隱藏域,存儲少量回發到自身或另一頁的頁信息時使用,不考慮安全性問題時使用。
情況三:源頁面傳遞數值給目標頁面,而源頁面不能直接連接到目標頁面。
Application: 存儲由多個用戶使用且更改不頻繁的全局信息,此時安全性不成為問題。不要存儲大量的信息。Session:存儲特定於單獨會話的短期信息,並且需要較高的安全性。不要在會話狀態中存儲大量的信息。需要注意,將為應用程序中每一會話的生存期創建並維護會話狀態對象。在支持許多用戶的應用程序中, 這可能會占用大量服務器資源並影響可縮放性。
Cookie: 當您需要在客戶端存儲少量信息以及不存在安全性問題時使用。類的靜態屬性,方便傳送多個數據。
Cache :對象用於單個用戶、一組用戶或所有的用戶。可以為多個請求長時間、高效率的保存數據。上述幾個方法, 不僅用於情況三, 前面兩種情況都可以使用,只是沒有必要時盡量少用,否則會造成資源浪費或增加程序的復雜性