1. 程式人生 > >asp.net中常用的幾種頁面間傳遞引數的方法,及各自優缺點

asp.net中常用的幾種頁面間傳遞引數的方法,及各自優缺點

1、頁面重定向方式中常用的兩

(1)Redirect 方法將客戶端重定向到新的頁面,只是簡單地終止當前頁面,並轉入新的頁面開始執行,對轉入的頁面無任何限制。

(2)Transfer 方法終止當前頁的執行,併為當前請求開始執行新的頁面。把執行流程從當前頁面轉到同一伺服器中的另一頁面,但是新的頁面仍然使用當前頁面建立的應答流。

這兩種方法的主要區別是:(1)Redirect 方法可以實現任意網頁間的重定向,而Transfer 方法只能實現同一伺服器中 ASPX 頁面間的重定向。

(2)Redirect 方法不會保留當前頁面的表單(Form)資料和查詢字串(QueryString),而Transfer 方法則可以保留這些資料。

2、QueryString 的使用最簡單最常用的傳值方法,與傳統的 Get 方法相對應,使用變化相對較小。資料直接在URL 中以明文傳遞,對於使用者來說是可見的,但是可以加密。此方法的優點是簡單、方便,缺點是能傳遞的資料量少,而且不能傳遞物件。

3、Form 的使用通過表單中的控制元件來傳遞資料,與傳統的Post 方法相對應,使用變化相對較大。

該方法的優點是可以傳遞大量資料,並且可以訪問源頁面控制元件中的資料;缺點是操作比較複雜,生命週期僅限於當前請求。

4、Session 的使用 Sessionss 物件為當前使用者會話提供資訊。

通過其屬性可以方便地設定和檢索ASP.NET 會話狀態變數,這些變數的值在會話持續期間保留不變,並且可以被同一個會話中的所有頁面訪問,這就為頁面傳值提供了途徑和方便。

該 方 法 的 特點是 :

(1)使用者資料儲存在伺服器端;

(2)ASP.NET 中的Session 物件也可以不依賴Cookie 而正常工作;

(3)可以直接儲存物件,且無大小限制;

(4)有效期與使用者的活動時間有關,具體為使用者活動時間+自定義延遲時間。該方法的缺點是:由於Web 應用程式對每個使用者都會生成 Session 變數,因此它會隨著使用者數量的增多而加重伺服器的負擔。如果資料量比較小,Sessionss 物件是儲存只需要在當前對話中保持的特定資料的極好位置。

5、cookic:該方法的缺點是:並非所有的瀏覽器都支援Cookie;使用者可以禁用和刪除它;資訊採用明文儲存,安全性差。

當特定的使用者需要特定的資料片,並且需要把資料在某個可變的時段中保持的時候,Cookie 就非常方便,存在於客戶端,不佔用伺服器資源。

6、Static:靜態變數,可能直接通類名來呼叫,優點是如果善加利用,則可以有效提高資料傳遞效率,缺點是如果濫用,則會導致使用者或頁面間資料紊亂,造成極大的隱患。

7、Cache 緩衝機制,大量的伺服器資源來建立內容存在伺服器記憶體中,提高應用程式效能,優點是:傳遞引數大小和數量沒有限制,速度快。缺點是:當緩衝太多時,伺服器會地緩衝採用優先順序排序,把小的不常使用的清除掉,以此導致傳參失敗,相對操作機制也比較複雜。

8、Context 的使用 Context 物件包含與當前頁面相關的資訊,提供對整個上下文的訪問,包括請求、響應、以及上文中的Session 和 Application 等資訊。可以使用此物件在網頁之間共享資訊,從而實現頁面間的傳值。與使用 Form 的方法類似,該方法也能保持大量的資料,缺點也相同,但使用方法相對比較簡單。

9、ViewState 的使用 ViewState 是ASP.NET 用來在同一頁面的多個請求之間儲存和還原伺服器控制元件檢視狀態的一種機制。與傳統的“同一頁面”不同,ASP.NET 中“同一頁面”的每一個請求都會導致伺服器重新生成該頁面,但是新生成的頁面並不包含原來頁面的資料。ViewState 的任務就是儲存原來頁面中伺服器控制元件檢視狀態的資料供新頁面使用。從這個意義上講, ViewState 也可以看作是一種在頁面間傳遞資料的工具。 ViewState 的工作原理是:作為一個隱藏的窗體欄位在客戶端和伺服器之間傳遞,可見,濫用ViewState 會加重頁面回傳的負擔,從而降低應用程式的效能。

10、Web.config 和Machine.config 的使用 Web.config 檔案用來設定每個ASP.NET 應用程式的一些屬性,Machine.config 檔案用來設定所有應用程式基礎資訊。這 2 種檔案儲存的資料一般都很小,多為明文,特別適合儲存一些字串常量, 如資料庫連線資訊。此外, Web.config 檔案是可以擴充套件的,因此,也可以用來傳遞變數。因為這 2 種檔案會被自動快取,所以不存在因磁碟I/O 產生的效能瓶頸問題。