ASP中頁面之間傳遞值的幾種方式

2021-07-11 13:07:35 字數 3553 閱讀 4479

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...