轉自:http://blog.csdn.net/caozhangyingfei0109/article/details/21110859
我找到了七種傳值方式,分別是:URL傳值,Session傳值,Cookie傳值,Server.Transfer傳值,Application傳值,利用某些控件的PostBackUrl屬性和使用@PreviousPageType指令傳值。
一.傳值方式簡單彙總
傳值方法名稱 |
傳值方式 |
優缺點 |
URL傳值 (QueryString傳值) |
2種傳值方式。 1、超級鏈接文本進行傳值;2、調用HttpResponse對象的Redirect方法 |
優點:一般用於傳遞的值少,安全性較低; 缺點:傳遞的值是會顯示在瀏覽器的地址欄上的,而且不能傳遞對象 |
Session傳值 |
把控件中的值存在Session變量中,然後在另一個頁面中使用它,以不同頁面間實現值傳遞的目的。 |
優點:將每份數據存儲於服務器變量中,可以傳遞比較多的數據;安全性較高 缺點:Session變量如果存儲過多的數據會消耗過多的服務器資源; |
Cookie傳值 |
比較特殊的數據存儲方式,因爲這種方式將數據存儲於瀏覽用戶的電腦中,以文本文件的形式存在於磁盤中 |
優點:很多登錄系統就是利用Cookie實現用戶自動登錄。即用戶登錄一次的登錄信息將被寫入到用戶電腦的Cookie文件中,下次登錄時,網站自動讀取該Cookie完成身份驗證。 缺點:有些瀏覽器不支持Cookie傳值,安全性不高 |
Server.Transfer傳值 |
使用該方法可以在另一個頁面以對象屬性的方式來存取顯露的值,但還需要額外寫一些代碼以創建一些屬性以便可以在另一個頁面訪問它 Transfer只適合於服務器端重定向的頁面。 |
優點:使用這種方法是簡潔的同時又是面向對象的。使用該方法編程者可以在另一個頁面以公開對象屬性的方式來存取值。 缺點:操作步驟較多 |
Application傳值 |
通過HttpApplication對象在服務器端生成一個狀態變量來存儲所需的信息,該HttpApplication對象變量的可用範圍覆蓋整個WEB應用程序,也就是說對所有用戶都有效。其常用的方法用Lock和UnLock。 |
該對象一般存儲一些要公佈的信息,如在線人數等,而對於那些涉及用戶個人的敏感數據則不用這種方法存儲。 |
利用某些控件的PostBackUrl屬性 |
主要是設置控件的“PostBackUrl”屬性, |
優點:更加快捷,並減少了處理步驟。 |
使用@PreviousPageType指令 |
用於批定跨頁面的傳送過程起始於哪個頁面.包含兩個屬性: TypeName:設置回送時的派生類名;VirtualPath:設置回送時所傳送頁面的地址. |
這個指令是.net 2.0中的一個新指令,用於處理ASP.NET 2.0提供的跨頁面傳送新功能。 |
二.簡單比較
1.Session與Cookie
相同點:存儲傳遞值,是對每一個用戶而言的;
不同點:Cookie存放在客戶端;Session存放在服務器端,而且Cookie的使用要配合 ASP.NET內置對象Request來使用。
2.Session與Application
相同點: Application通過HttpApplication對象傳值的方法與Session的傳值方法相似;
不同點: Session是對於每個單獨的用戶,當該用戶關閉瀏覽器,則Session失效。HttpApplication對象存儲的變量是針對所有訪問程序的用戶,即使有用戶關閉了瀏覽器,變量的值不會丟失。
3.利用某些控件的PostBackUrl屬性與 Server.Transfer傳值
相同點:跨頁面傳送和調用HttpServerUtility對象的Transfer方法有相似之處,不過效率更高;
不同點:因爲調用HttpServerUtility對象的Transfer方法是基於服務器的方法,而跨頁面傳送是基於瀏覽器端的。
三.總結
.NET傳值,看起來方法挺多,但是真要應用的時候,還是要有針對性,考慮你做的系統的功能需求,安全性等方方方面,不是找最簡單最方便的方法,而是要找最適合做你這個項目的方法,中國的中庸之道,“平衡”就好。