1)Request.QueryString 在ASP時代,這個是較常用的方法,到了ASP.NET,好像用的人不多了,但是不管怎麼說,這是一個沒有過時,且很值得推薦的方法,因為不管是ASP還是ASP.NET,最基本的都還是基於HTTp協議的。 缺點是非常明顯的,讓在多個頁面傳遞時,可能就Request不到了
2)Session 這個是最常用的一個方法,Session的優點是使用簡單,缺點是佔用伺服器資源,因為每一個Session都意味這伺服器需要維護相應客戶的會話資訊,自然如果登入的使用者多了,那麼將非常佔用伺服器資源。另外Session還有一個缺點,預設的如果你登入後20分鐘內沒有任何動作,伺服器自動會取消該會話,所以那時你又需要登入。 PS。這裡使得我想起一個事情,前幾天有一個公司讓我看了一段代碼,在登入時,就是使用Session記錄使用者登入的,My GOD,微軟知道了肯定要吐血。。它辛辛苦苦給你提供的web.config裡的配置 <deny user="*"/> 就要這一個配置,你不用,仍然用ASP時代的Session,豈不是浪費了MS的一片苦心
3)Application 這個在ASP時代還是比較常用的,主要用去儲存全域變數,例如資料庫連結資訊,到了ASP.NET時代,用的不多,至少我好象一直沒有用過。
4)Cookie 這個是我的最愛,Cookie最大的特點是由用戶端維護,不用佔用伺服器資源,而且你可以設定使用者登入時,Cookie的有效期間,例如一天,這樣在一天內你不用擔心系統再讓你登入。當然Cookie也有缺點,那就是安全性,因為Cookie在用戶端,確實有些軟體可以分析Cookie的登入資訊,所以你寫入Cookie的內容不要過于敏感,例如不要儲存密碼,還有作為安全,寫入Cookie的內容最好要加密。
5)Viewstate ASP.NET新增的,Viewstate使用簡單,缺點是只能夠在同一個頁面使用,在ASP.NET2.0裡這個問題可以使用Button的PostBackUrl進行結果。
6)Cache 使用Cache儲存資料還想不多,但是畢竟也是一種手段,另外,在使用Cache儲存DataSet時,其實還是引用而不是內容的拷貝。
一、目前在ASP.NET中頁面傳值共有這麼幾種方式:
1、表單提交, <form action= "target.aspx" method = "post" name = "form1"> <input name = "param1" value = "1111"/> <input name = "param2" value = "2222"/> </form> .... form1.submit(); .... 此種方在ASP。NET中無效,因為ASP。NET的表單總是提交到自身頁面,如果要提交到別一頁面,需要特殊處理。
2、<A href="target.aspx?param1=1111&m2=2222">連結地址傳送</A> 接收頁面: string str = Request["param1"]
3、Session共用 發送頁面:Session("param1") = "1111"; 按收頁面 string str = Session("param1").ToString();
4、Application共用 發送頁面: Application("param1") = "1111"; 按收頁面: string str = Application("param1").ToString(); 此種方法不常使用,因為Application在一個應用程式定義域範圍共用,所有使用者可以改變及設定其值,故只應用計數器等需要全域變數的地方。
5、Cookie
6、Response.Redirect()方式 Response.Redirect("target.aspx?param1=1111&m2=2222") 接收頁面: string str = Request["param1"]
7、Server.Transfer()方式。 Server.Transfer("target.aspx?param1=1111&m2=2222") 接收頁面: string str = Request["param1"]