日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

ASP.NET跨页面传值(二)

發布時間:2025/1/21 asp.net 56 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ASP.NET跨页面传值(二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在網頁應用程序的開發中,頁面之間的傳值應該是最常見的問題了。 在這篇文章里,azamsharp 將為我們介紹一些ASP.NET頁面傳值的方式。本文所舉的例子非常簡單,僅僅包含了一個文本框和幾個按鈕,當按鈕點擊時文本框中的字符串將會以不同的方式傳遞到另外的頁面去。

?

1. Response.Redirect (或稱 Query String 方式、URL方式)?

?

?

Response.Redirect("WebForm5.aspx");

?

首先讓我們看看 Response.Redirect 方法,這應該是最簡單的了,當我們點擊Response.Redirect按鈕后觸發上面的那行代碼即可。在這里跟大家分享一個小技巧:有些時候我們會把上面的代碼放在try{ ... }catch() 中去,也就是說當我們捕獲異常,并把異常傳遞給另一個網頁。如果我們嘗試這樣做,也許會得到一個“System.Threading” 異常,這是因為我們跳轉到了另外一個頁面,而原來的頁面線程仍然在運行中。可以這樣來解決此問題:

?

Response.Redirect("WebForm5.aspx",false);

?

這意味著告訴編譯器去“WebForm5.aspx”, 同時“false”參數告訴編譯器不要停止在原來頁面上的活動, 這方面我們可以參見System.Threading類。

在下面的代碼中,“txtName”是待傳值的文本框的名字,那個跟在“?”后面的“Name” 是一個臨時response變量的標志,它承載了txtName的值。

?

private?void?Button1_Click(object?sender,?System.EventArgs?e)
{
????//?Value?sent?using?HttpResponse
????Response.Redirect("WebForm5.aspx?Name="+txtName.Text);
}

?

?

OK,到此位置,我們已經完成了Response的傳值。但是,我們在"WebForm5.aspx"中怎樣接收傳來的值呢?不要急,我們將在"WebForm5.aspx"的page_Load事件中寫下面的代碼。首先,我們要確認傳來的值不是“null”,如果不是“null”,我們就可以用Label將這個值顯示出來。

?

注:當我們使用Response.Redirect傳遞變量時,所有的變量都能在瀏覽器的URL中看到,我們不能用這種方法來傳遞重要的機密數據,如信用卡號等。

?

?

if?(Request.QueryString["Name"]!=?null)
????Label3.Text?=?Request.QueryString["Name"];

?

2. Cookies 方式

?

接下來是用cookies, Cookies由服務端創建,但保存在客戶端,當我們點擊“Cookies”按鈕時,運行如下代碼:

?

HttpCookie?cName?=?new?HttpCookie("Name");
cName.Value?=?txtName.Text;?
Response.Cookies.Add(cName);?
Response.Redirect("WebForm5.aspx");

?

?

?

首先,我們創建了一個名叫“cName”的cookie實例,由于一個cookie實例可以保存多個值,我們需要告訴編譯器這個cookie將保存“Name”值,并把txtName.Text的值賦給它,并把它加到"輸出流” 中,并使用Response.Redirect輸出到另外一個網頁。

然后讓我們看看怎樣在目標頁面中取出這個cookie中的值:

?

if?(Request.Cookies["Name"]?!=?null?)
????Label3.Text?=?Request.Cookies["Name"].Value;

?

顯然,步驟跟上一種方法非常相似,只是使用Request.Cookies代替了Request.QueryString。

注:一些瀏覽器是不支持Cookies的。

?

3. Session 變量

?

?

接下來我們看看在服務端維持的Session變量。 Session在用戶向服務端發出首次請求時被創建,而在用戶關閉瀏覽器或異常發生時終止(其實還有過期的情況)。下面的代碼是用Session來傳值的例子。 我們可以看到 Session 為用戶創建了“Name” 鍵,并把TextBox的值賦給它。

?

Code
//?Session?創建
Session["Name"]?=?txtName.Text;?
Response.Redirect("WebForm5.aspx");

//?下面的代碼顯示如何從Session中取值
//?代碼放在其它頁面中

if(Session["Name"]?!=?null)?
????Label3.Text?=?Session["Name"].ToString();

?

?

4. Application? 變量

?

有些時候,我們需要一個值能夠在所有的頁面中訪問,這時候我們可以使用Application變量。 如下列代碼所示,一旦我們創建了Application變量并賦值,就可以在網站(項目)的所有頁面中獲得它。

?

Code
//?為Application變量賦值

Application["Name"]?=?txtName.Text;?
Response.Redirect("WebForm5.aspx");?

//?從Application變量中取出值

if(?Application["Name"]?!=?null?)?
????Label3.Text?=?Application["Name"].ToString();

?

5. Server.Transfer方式(或稱HttpContext方式)

?

我們還可以使用 Server.Transfer方式(或稱HttpContext方式)在頁面之間傳遞變量,此時,要傳遞的變量可以通過屬性或方法來獲得,使用屬性將會比較容易一些。好,讓我們在第一個頁面中來寫一個用來獲得TextBox值的屬性:

?

Code
public?string?GetName
{?
????get?{?return?txtName.Text;?}
}

?

我們需要使用Server.Transfer把這個值發送到另外一個頁面中去,請注意Server.Transfer只是發送控件到一個新的頁面去,而并不會使瀏覽器重定向到另一個頁面。所以,我們我們在地址欄中仍然看到的是原來頁面的URL。如下代碼所示:

?

Server.Transfer("WebForm5.aspx");

?

接下來,我們到"WebForm5.aspx"看看:

?

Code
//?You?can?declare?this?Globally?or?in?any?event?you?like

WebForm4?w;

//?Gets?the?Page.Context?which?is?Associated?with?this?page?

w?=?(WebForm4)Context.Handler;
//?Assign?the?Label?control?with?the?property?"GetName"?which?returns?string

Label3.Text?=?w.GetName;

?

結束語:

?

各種傳值方式都各有優劣,在不同的情況下選擇適當的方式是很重要的。

?

以上內容引自:http://www.cnblogs.com/zhangleong/archive/2010/08/01/1789839.html

總結

以上是生活随笔為你收集整理的ASP.NET跨页面传值(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。