国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

asp.net 頁面?zhèn)髦档膸讉€方法

2024-07-10 12:53:38
字體:
供稿:網(wǎng)友

對于初學(xué)者來說,在頁面之間傳遞價值是唯一的方法,但這也是他們遇到的難點,事實上,對于大部分人來說,這不一定是一個困難點,錯新技術(shù)頻道小編將和大家分享asp.net 頁面?zhèn)髦档膸讉€方法。
1. Response.Redirect (或稱 Query String 方式、URL方式)

復(fù)制代碼 代碼如下:

Response.Redirect("WebForm5.aspx");


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

?

復(fù)制代碼 代碼如下:

?


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


這意味著告訴編譯器去“WebForm5.aspx”, 同時“false”參數(shù)告訴編譯器不要停止在原來頁面上的活動, 這方面我們可以參見System.Threading類。
在下面的代碼中,“txtName”是待傳值的文本框的名字,那個跟在“?”后面的“Name” 是一個臨時response變量的標志,它承載了txtName的值。

?

復(fù)制代碼 代碼如下:

?


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


OK,到此位置,我們已經(jīng)完成了Response的傳值。但是,我們在"WebForm5.aspx"中怎樣接收傳來的值呢?不要急,我們將在"WebForm5.aspx"的page_Load事件中寫下面的代碼。首先,我們要確認傳來的值不是“null”,如果不是“null”,我們就可以用Label將這個值顯示出來。
注:當我們使用Response.Redirect傳遞變量時,所有的變量都能在瀏覽器的URL中看到,我們不能用這種方法來傳遞重要的機密數(shù)據(jù),如信用卡號等。

?

復(fù)制代碼 代碼如下:

?


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


2. Cookies 方式
接下來是用cookies, Cookies由服務(wù)端創(chuàng)建,但保存在客戶端,當我們點擊“Cookies”按鈕時,運行如下代碼:

?

復(fù)制代碼 代碼如下:

?


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


首先,我們創(chuàng)建了一個名叫“cName”的cookie實例,由于一個cookie實例可以保存多個值,我們需要告訴編譯器這個cookie將保存“Name”值,并把txtName.Text的值賦給它,并把它加到"輸出流” 中,并使用Response.Redirect輸出到另外一個網(wǎng)頁。
然后讓我們看看怎樣在目標頁面中取出這個cookie中的值:

?

復(fù)制代碼 代碼如下:

?


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


顯然,步驟跟上一種方法非常相似,只是使用Request.Cookies代替了Request.QueryString。
注:一些瀏覽器是不支持Cookies的。
3. Session 變量
接下來我們看看在服務(wù)端維持的Session變量。 Session在用戶向服務(wù)端發(fā)出首次請求時被創(chuàng)建,而在用戶關(guān)閉瀏覽器或異常發(fā)生時終止(其實還有過期的情況)。下面的代碼是用Session來傳值的例子。 我們可以看到 Session 為用戶創(chuàng)建了“Name” 鍵,并把TextBox的值賦給它。

?

復(fù)制代碼 代碼如下:

?


// Session 創(chuàng)建
Session["Name"] = txtName.Text;
Response.Redirect("WebForm5.aspx");
// 下面的代碼顯示如何從Session中取值
// 代碼放在其它頁面中
if(Session["Name"] != null)
Label3.Text = Session["Name"].ToString();


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

?

復(fù)制代碼 代碼如下:

?


// 為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值的屬性:

?

復(fù)制代碼 代碼如下:

?


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


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

?

復(fù)制代碼 代碼如下:

?


// 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;

我們可以看到,各種價值轉(zhuǎn)移方法都有各自的優(yōu)缺點。在不同的情況下選擇適當?shù)姆椒ㄊ呛苤匾模M蠹铱梢岳^續(xù)支持錯新技術(shù)頻道。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 宣汉县| 枝江市| 龙井市| 大田县| 马尔康县| 镇坪县| 健康| 潢川县| 海原县| 开远市| 武功县| 苏尼特左旗| 阜阳市| 南川市| 孝昌县| 昌乐县| 山阴县| 乌海市| 扶余县| 洛隆县| 简阳市| 牙克石市| 鄂尔多斯市| 通渭县| 亚东县| 满城县| 巴林左旗| 合江县| 宁津县| 雅安市| 道孚县| 阳山县| 泾川县| 田东县| 博湖县| 丘北县| 甘孜县| 宁远县| 墨脱县| 仙桃市| 禹州市|