Asp.Net頁面之間傳遞資料大致有這麼幾種方式:
1.GET方式:
即通過URL加上自訂的name-value集合,這個一般大家都在用,也很方便,而且客戶可以直接通過URL訪問特定的頁面。
2.POST方式:
即通過提交Form來傳遞Form裡的資料,可以在Form中添加Hidden欄位來自訂資料。
3.Application域變數:
多個頁面訪問或修改全域變數來交換資料,記得訪問時候要進行加鎖/解鎖。由於是在服務端的變數,可以儲存複雜結構的變數類型或對象。
4.Session域變數:
多個頁面訪問或修改會話變數來交換資料,記得訪問時候也要進行加鎖/解鎖。由於是在服務端的變數,可以儲存複雜結構的變數類型或對象。
(單個頁面或包含使用者控制項可以通過下面的方式)
5.ViewState域變數:
類似Form變數,儲存在客戶段頁面裡,可以使用複雜結構類型的變數或者對象(同時對象要實現Serializable介面,畢竟最終要序列化到文本的),但會增加最終產生的html頁面的大小而增加了資料流量,一般在寬頻環境可以忽略掉的。
6.Request域變數:
把需要傳遞的資料存放在HttpContext結構中,以供多個Request後續頁面使用,這個在應用使用者控制項的時候蠻實用的。
7.Cookie域變數:
這個用的很少,一般就只是用來儲存使用者痕迹。
8.Cache域變數:
服務端緩衝變數,一般用於給多個頁面讀資料。
以前Web編程是ColdFusion入門的,也就是99年底的時候,CF那個時候已經有上面的幾種方式(ViewState倒是沒有),而且還有其他幾種:
Sever域:單個伺服器上的全域變數
Application域:單個應用程式上的全域變數(群集時可跨多個伺服器)
Session域:就是一般的會話,如果用戶端沒有開啟Cookie可以通過Url中的UID來標示
Cookie域:和其他Web編程的差不多
Request域:就是Get方式的
Form域:就是Post方式的
Flash域:與flash通訊時候的變數
Client域:和用戶端瀏覽器相關的變數,主要用於使用者操作跟蹤
Custom Tag域:自訂控制項內的局部變數
CF Tag域:CF標準控制項內的局部變數
CGI域:CGI訪問的全域變數,包括Request、Server、Client等一些標準的變數,和上面的幾種方式類似,還有的就是CGI環境變數,一般都是用來分析用戶端、服務端的上下文環境的
Variable域:單頁面範圍內的變數
Caller域:被調用的自訂控制項訪問調用方的變數,目前已經不被使用了。