asp.net頁面之間傳遞值的幾種方式
一、querystring
querystring是一種非常簡單的傳值方式,他可以將傳送的值顯示在瀏覽器的位址列中。如果是傳遞乙個或多個安全性要求不高或是結構簡單的數值時,可以使用這個方法。但是對於傳遞陣列或物件的話,就不能用這個方法了。
這種方法的優點:1.使用簡單,對於安全性要求不高時傳遞數字或是文字值非常有效。
2.不能傳遞物件。
2.在源頁面的**用response.redirect(url);重定向到上面的url位址中。
3.在目的頁面的**使用request.querystring["name"];取出url位址中傳遞的值。
例子:(1)a.aspx
複製**
private void button1_click(object sender, system.eventargs e)
複製**
(2)b.aspx
private void page_load(object sender, eventargs e)
二、session
優點:1.使用簡單,不僅能傳遞簡單資料型別,還能傳遞物件。
2.資料量大小是不限制的。
缺點:1.在session變數儲存大量的資料會消耗較多的伺服器資源。
2.容易丟失。
使用方法:1.在源頁面的**中建立你需要傳遞的名稱和值構造session變數:session["name"]="value(or object)";
2.在目的頁面的**使用session變數取出傳遞的值。result = session["nmae"]
注意:session不用時可以銷毀它,銷毀的方法是:清除乙個:session.remove("session名");
清除所有:session.clear();
例子:(1)a.aspx
private void button1_click(object sender, system.eventargs e)
(2)b.aspx
private void page_load(object sender, eventargs e)
三、cookie
這個也是大家常使用的方法,cookie用於在使用者瀏覽器上儲存小塊的資訊,儲存使用者的相關資訊,比如使用者訪問某**時使用者的id,使用者的偏好等,使用者下次訪問就可以通過檢索獲得以前的資訊。所以cookie也可以在頁面間傳遞值。cookie通過http頭在瀏覽器和伺服器之間來回傳遞的。cookie只能包含字串的值,如果想在cookie儲存整數值,那麼需要先轉換為字串的形式。
與session一樣,其是什對每乙個使用者而言的,但是有個本質的區別,即cookie是存放在客戶端的,而session是存放在伺服器端的。而且cookie的使用要配合asp.net內建物件request來使用。
缺點:1.常常被人認為用來收集使用者隱私而遭到批評。
2.安全性不高,容易偽造。
使用方法:1.在源頁面的**中建立你需要傳遞的名稱和值構造cookie物件:
2.在目的頁面的**使用cookie物件取出傳遞的值:result = request.cookies[ "mycookie" ].value;
例子:(1)a.aspx
private void button1_click(object sender, system.eventargs e)
(2)b.aspx
string myname1value;
myname1value = request.cookies[ "mycookie" ].value;
優點:1.使用簡單,消耗較少的伺服器資源。
2.不僅能傳遞簡單資料,還能傳遞物件。
3.資料量大小是不限制的。
注意:常用lock和unlock方法用來鎖定和解鎖,為了防止併發修改。
例子:(1)a.aspx
private void button1_click(object sender, system.eventargs e)
(2)b.aspx
複製**
private void page_load(object sender, eventargs e)
複製**
五、server.transfer
這個才可以說是面象物件開發所使用的方法,其使用server.transfer方法把流程從當前頁面引導到另乙個頁面中,新的頁面使用前乙個頁面的應答流,所以這個方法是完全面象物件的,簡潔有效。
server.transfer是從當前的aspx頁面轉到新的aspx頁面,伺服器端執行新頁並輸出,在新頁面中通過context.handler來獲得前乙個頁面傳遞的各種資料型別的值、表單資料、querystring.由於重定向完全在伺服器端完成,所以客戶端瀏覽器中的url位址是不會改變的。呼叫server.transfer時,當前的aspx頁面終止執行,執行流程轉入另乙個aspx頁面,但新的aspx頁面仍使用前一aspx頁面建立的應答流。
ps:比較server.transfer和response.redirect的區別。
(1)server.transfer在伺服器端完成,所以客戶端瀏覽器中的url位址是不會改變的;response.redirect是客戶端完成,向伺服器端提出新的頁面處理請求,所以客戶端瀏覽器中的url位址是會改變的。
(2)server.transfer在伺服器端完成,不需要客戶端提出請求,減少了客戶端對伺服器端提出請求。[2]
(3)server.transfer只能夠轉跳到本地虛擬目錄指定的頁面,也就是工程專案中的頁面,而response.redirect則十分靈活,可以跳轉到任何url位址。
(4)server.transfer可以將前乙個頁面的各種型別的值傳到新的頁面;response.redirect則只能借助url中帶引數或是結合上面四種辦法把各種型別的值傳到新的頁面。
優點:1.直接在伺服器端重定向,使用簡單方便,減少了客戶端對伺服器端提出請求。
2.可以傳遞各種資料型別的值和控制項的值。
使用方法:1.在源頁面的**中,使用page類的server.transfer跳到另乙個頁面傳遞頁面資料:server.transfer("b.aspx","false")。
2.在目的頁面中,使用context.handler來接收資料:formerpage formerpage = (formerpage)context.handler; 然後用formerpage的屬性和方法來獲取前乙個頁面的值,或者直接用context.items["myparameter "]
例子:(1)a.aspx
複製**
public string name }
private void button1_click(object sender, system.eventargs e)
複製**
(2)b.aspx
複製**
private void page_load(object sender, eventargs e)
頁面之間的值傳遞
頁面之間的值傳遞方式有很多,由於最近有用到,所以學習了一下,以下記錄 1.querystring方法 引數傳遞通過頁面重定向 response.redirect end.aspx?引數名 引數值 在新頁面引數的獲取方式 string 字元名 request.querystring 傳遞的引數名 2....
不同頁面之間傳遞值
注 此系列記錄在我實際開發中遇到的問題和收藏一些技巧文章。本篇技巧和訣竅記錄的是 不同頁面之間傳遞值,非常簡單的技巧,我相信大家都知道。這個場景太常見了,當然有許多許多的方法,我來介紹一種非常簡單的方法吧!a頁面 b頁面。需要在b頁面獲取a頁面的資訊。a頁面 form id form1 runat ...
頁面之間傳遞引數的幾種方法
asp.net頁面之間傳遞引數的幾種方法 第一種方法 通過url鏈結位址傳遞 send.aspx protected void button1 click object sender,eventargs e receive.aspx string username request.querystri...