asp.net頁面傳值方法匯總

來源:互聯網
上載者:User

1. Get(即使用QueryString顯式傳遞)
     方式:在url後面跟參數。
     特點:簡單、方便。
     缺點:字串長度最長為255個字元;資料泄漏在url中。
     適用資料:簡單、少量、關鍵的資料。
     適用範圍:傳遞給自己、傳遞給另一個目標頁面;常用於2個頁面間傳遞資料。
     用法:例如:url後加?UserID=…,跳轉到目標頁面,目標頁面在伺服端可用Request.QueryString["InputText"]擷取其指定參數值。
2. Post
     方式:通用的方式。利用form提交。
     特點:最常用的方法。常用技巧是把隱秘的資料存在隱藏欄位中由form提交。
     適用資料:大量資料,包括檔案上傳。
     適用範圍:同Get方法
     用法:在用戶端form指定action目標後submit、在asp.net的伺服端中使用server.Transfer(url)提交;在伺服端中用Request.Form["FormFieldID"]擷取。
3. 頁面對象的屬性
     方式:asp.net特有方式 。利用HttpContext擷取發請求的頁面的資訊。
     特點:可以直接儲存物件。
     缺點:注意強制轉換的類型要正確。
     適用資料:各種資料。
     適用範圍:頁面之間傳遞複雜資料。
     用法:擷取Context.Handler將其轉換為發請求的頁面的執行個體,隨後就可以輕鬆訪問其form中的欄位、甚至屬性。其中的Context是指HttpContext對象,Handler是其屬性,Context.Handler的意思可以理解為建立源頁類的執行個體變數,而得到此執行個體之後,就可以直接存取其中的屬性和Public方法了。
4. cookie
     方式:將資料存在用戶端的經典方法。
     缺點:安全性低、受用戶端設定限制、一個網站僅存20個cookie,每個容量4096位元組。
     有效期間:自訂或被使用者清除
     適用資料:使用者的會話資料(一般是使用者名稱,使用者的個人化資訊等)
     適用範圍:單個使用者、整個網站所有頁面
     用法:引用Request.Cookies(讀取資訊)、Response.Cookies(寫入資訊)、或用HttpCookieCollection直接建立Cookie對象。
5. Session
     方式:將使用者資料存放區在伺服端。
     特點:asp.net中可以設定session的儲存方式、位置、SessionID的儲存是否依賴cookie。
             可以直接儲存物件。
     缺點:asp.net中有失效的隱患
     有效期間:使用者啟用時間+自訂延遲。
     適用資料:使用者的特有資訊。
     適用範圍:單個使用者、整個網站所有頁面。
     用法:Session["CollectionName"] = value/object;
6. Cache
     方式:將使用者資料存放區在伺服端資料緩衝中。
     特點:可以大大提高效率。 可以直接儲存物件。
     缺點:資料更新不及時。
     有效期間:應用程式生命週期或自訂。
     適用資料:所有頁面、所有使用者都可以共用的資料。
     用法:Cache["CollectionName"] = value|object;
7. Appliction
     方式: 將資料存放區於此,相當於全域變數。
     特點:可以直接儲存物件。整個網站的共用資料。
     有效期間:應用程式生命週期。
     適用資料:所有頁面、所有使用者共用的資料。
     用法:Appliction["CollectionName"] = value|object;
8. ViewState
     方式:asp.net特有機制,用來恢複頁面狀態。
     特點:將頁面各控制項及其所存資料序列化存在name為_ViewState的隱藏欄位中。
     缺點:存在HTML中,安全性較低。可以設定加密和驗證,但資料量會大增、效率有影響。
     適用資料:頁面PostBack需要儲存的資料,資料太大會影響頁面發送效率。
     適用範圍:頁面自身資料儲存。
     用法:ViewState["CollectionName"] = value;
9. Static
     方式: 將資料存於靜態變數中。
     特點:利於提高效率。
     缺點:若用不好會致使使用者或頁面間資料紊亂,造成極大的隱患。建議只賦值一次,絕對禁止為單個使用者而更改此值。
     適用資料:所有使用者共用的資料。
     適用範圍:此類所有的頁面執行個體。
     用法:在class中聲明靜態變數。
整理:
     頁面自身儲存資料可用的有ViewState,static變數。
     頁面之間傳遞資料常用get,post,HttpContext,當然可以變通一下用於自身資料儲存。
     單使用者的所有頁面資料共用常用session,cookie,當然也可以應用在以上兩種情況。
     整個應用程式(所有使用者所用頁面)的資料共用常用Appliction,cache,static變數。
總結:   
     當然可以變通下靈活應用來解決問題,但是要選擇合適的,常見到濫用Get和Session。
     建議在用Request的時候要指明所取的集合,比如Get方法傳來的參數從QueryString集合取,Post的從Form取,cookie從Cookies裡取。雖然用Request[]集合,以上幾種都可以取到,但是卻造成效能上的浪費,本來直接在Form集合中,卻遍曆了QueryString,Form,Cookies等集合才取出來。
ps:在電腦的世界裡,凡是提供服務的一方我們稱為伺服端(server),而接受服務的另一方我們稱作用戶端(client)。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.