ASP.NET頁面間的傳值的幾種方法
更新時間:2006年10月08日 00:00:00 作者:
ASP.NET WEB FORMS 給開發(fā)者提供了極好的事件驅(qū)動開發(fā)模式。然而這種簡單的應(yīng)用程序開發(fā)模式卻給我們帶來了一些小問題,舉個例子,在傳統(tǒng)的ASP應(yīng)用程序中,你能夠通過POST方法很容易的把一個值或多個值從一個頁面?zhèn)魉偷搅硪粋€頁面,用同樣的方法在ASP.NET中實現(xiàn)有點麻煩。在這里,我們可以通過其他方式來解決這種情形。ASP.NET為我們提供了三種方式,一種是可以通過用QueryString來傳送相應(yīng)的值,再一種是通過session變量來傳送相應(yīng)的值,還有就是通過Server.Transfer方法來實現(xiàn)。下面分別一一介紹:
一、使用Querystring
Querystring是一種非常簡單的傳值方式,其缺點就是會把要傳送的值顯示在瀏覽器的地址欄中,并且在此方法中不能夠傳遞對象。如果你想傳遞一個安全性不是那么太重要或者是一個簡單的數(shù)值時,用此方法最好不過了。下面通過一個小例子來完成傳值工作,步驟如下:
1、創(chuàng)建一個web form
2、在新建的web form中放置一個button1,在放置兩個TextBox1,TextBox2
3、為button按鈕創(chuàng)建click事件
代碼如下:
private void Button1_Click
(object sender, System.EventArgs e)
{
string url;
url="webform2.aspx?name=" +
TextBox1.Text + "&email=" +
TextBox2.Text;
Response.Redirect(url);
}
4、新建一個目標(biāo)頁面命名為webform2
5、在webform2中放置兩個Label1,Label2
在webform2的Page_Load中添加如下代碼:
private void Page_Load
(object sender, System.EventArgs e)
{
Label1.Text=Request.QueryString["name"];
Label2.Text=Request.QueryString["email"];
}
運行,即可看到傳遞后的結(jié)果了。
二、使用Session變量
使用Session變量傳值是一種最常見的方式了,此中方式不僅可以把值傳遞到下一個頁面,還可以交叉?zhèn)鬟f到多個頁面,直至把Session變量的值removed后,變量才會消失。舉個例子看看:
1、創(chuàng)建一個web form
2、在新建的web form中放置一個button1,在放置兩個TextBox1,TextBox2
3、為button按鈕創(chuàng)建click事件
代碼如下:
private void Button1_Click
(object sender, System.EventArgs e)
{
Session["name"]=TextBox1.Text;
Session["email"]=TextBox2.Text;
Response.Redirect("webform2.aspx");
}
4、新建一個目標(biāo)頁面命名為webform2
5、在webform2中放置兩個Label1,Label2
在webform2的Page_Load中添加如下代碼:
private void Page_Load
(object sender, System.EventArgs e)
{
Label1.Text=Session["name"].ToString();
Label2.Text=Session["email"].ToString();
Session.Remove("name");
Session.Remove("email");
}
運行,即可看到傳遞后的結(jié)果了。
三、使用Server.Transfer
雖然這種方法有點復(fù)雜,但也不失為一種在頁面?zhèn)髦档姆绞健?nbsp;
舉個例子看看:
1、創(chuàng)建一個web form
2、在新建的web form中放置一個button1,在放置兩個TextBox1,TextBox2
3、為button按鈕創(chuàng)建click事件
代碼如下:
private void Button1_Click
(object sender, System.EventArgs e)
{
Server.Transfer("webform2.aspx");
}
4、創(chuàng)建過程來返回TextBox1,TextBox2控件的值代碼如下:
public string Name
{
get
{
return TextBox1.Text;
}
}
public string EMail
{
get
{
return TextBox2.Text;
}
}
5、新建一個目標(biāo)頁面命名為webform2
6、在webform2中放置兩個Label1,Label2
在webform2的Page_Load中添加如下代碼:
private void Page_Load
(object sender, System.EventArgs e)
{
//創(chuàng)建原始窗體的實例
WebForm1 wf1;
//獲得實例化的句柄
wf1=(WebForm1)Context.Handler;
Label1.Text=wf1.Name;
Label2.Text=wf1.EMail;
}
運行,即可看到傳遞后的結(jié)果了。
一、使用Querystring
Querystring是一種非常簡單的傳值方式,其缺點就是會把要傳送的值顯示在瀏覽器的地址欄中,并且在此方法中不能夠傳遞對象。如果你想傳遞一個安全性不是那么太重要或者是一個簡單的數(shù)值時,用此方法最好不過了。下面通過一個小例子來完成傳值工作,步驟如下:
1、創(chuàng)建一個web form
2、在新建的web form中放置一個button1,在放置兩個TextBox1,TextBox2
3、為button按鈕創(chuàng)建click事件
代碼如下:
private void Button1_Click
(object sender, System.EventArgs e)
{
string url;
url="webform2.aspx?name=" +
TextBox1.Text + "&email=" +
TextBox2.Text;
Response.Redirect(url);
}
4、新建一個目標(biāo)頁面命名為webform2
5、在webform2中放置兩個Label1,Label2
在webform2的Page_Load中添加如下代碼:
private void Page_Load
(object sender, System.EventArgs e)
{
Label1.Text=Request.QueryString["name"];
Label2.Text=Request.QueryString["email"];
}
運行,即可看到傳遞后的結(jié)果了。
二、使用Session變量
使用Session變量傳值是一種最常見的方式了,此中方式不僅可以把值傳遞到下一個頁面,還可以交叉?zhèn)鬟f到多個頁面,直至把Session變量的值removed后,變量才會消失。舉個例子看看:
1、創(chuàng)建一個web form
2、在新建的web form中放置一個button1,在放置兩個TextBox1,TextBox2
3、為button按鈕創(chuàng)建click事件
代碼如下:
private void Button1_Click
(object sender, System.EventArgs e)
{
Session["name"]=TextBox1.Text;
Session["email"]=TextBox2.Text;
Response.Redirect("webform2.aspx");
}
4、新建一個目標(biāo)頁面命名為webform2
5、在webform2中放置兩個Label1,Label2
在webform2的Page_Load中添加如下代碼:
private void Page_Load
(object sender, System.EventArgs e)
{
Label1.Text=Session["name"].ToString();
Label2.Text=Session["email"].ToString();
Session.Remove("name");
Session.Remove("email");
}
運行,即可看到傳遞后的結(jié)果了。
三、使用Server.Transfer
雖然這種方法有點復(fù)雜,但也不失為一種在頁面?zhèn)髦档姆绞健?nbsp;
舉個例子看看:
1、創(chuàng)建一個web form
2、在新建的web form中放置一個button1,在放置兩個TextBox1,TextBox2
3、為button按鈕創(chuàng)建click事件
代碼如下:
private void Button1_Click
(object sender, System.EventArgs e)
{
Server.Transfer("webform2.aspx");
}
4、創(chuàng)建過程來返回TextBox1,TextBox2控件的值代碼如下:
public string Name
{
get
{
return TextBox1.Text;
}
}
public string EMail
{
get
{
return TextBox2.Text;
}
}
5、新建一個目標(biāo)頁面命名為webform2
6、在webform2中放置兩個Label1,Label2
在webform2的Page_Load中添加如下代碼:
private void Page_Load
(object sender, System.EventArgs e)
{
//創(chuàng)建原始窗體的實例
WebForm1 wf1;
//獲得實例化的句柄
wf1=(WebForm1)Context.Handler;
Label1.Text=wf1.Name;
Label2.Text=wf1.EMail;
}
運行,即可看到傳遞后的結(jié)果了。
相關(guān)文章
在ASP.NET 2.0中操作數(shù)據(jù)之六:編程設(shè)置ObjectDataSource的參數(shù)值
本文主要介紹在ObjectDataSource控件的Selecting事件中,設(shè)置InputParameters參數(shù),配合業(yè)務(wù)層的查詢方法,以達到查詢不同數(shù)據(jù)的目的。2016-04-04.NET應(yīng)用程序集DLL與EXE工作機制及原理介紹
這篇文章介紹了.NET應(yīng)用程序集DLL與EXE工作機制及原理,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-02-02在ASP.NET 2.0中操作數(shù)據(jù)之二十六:排序自定義分頁數(shù)據(jù)
前面教程中我們實現(xiàn)了高效的自定義分頁,但是只是一種固定排序方式。在本教程中,我們通過引入@sortExpression來擴展存儲過程既實現(xiàn)自定義分頁又提供自定義排序的功能。2016-05-05解讀ASP.NET 5 & MVC6系列教程(1):ASP.NET 5簡介
這篇文章主要介紹ASP.NET 5簡介以及對各個版本號進行解釋,ASP.NET 5中新的變化,需要的朋友可以參考下。2016-06-06解讀ASP.NET 5 & MVC6系列教程(6):Middleware詳解
這篇文章主要介紹了Middleware詳解,需要的朋友可以參考下2016-06-06NopCommerce架構(gòu)分析(一)Autofac依賴注入類生成容器
本文介紹了NopCommerce中IOC框架Autofac的使用,Autofac是一款I(lǐng)OC框架,比較于其他的IOC框架,如Spring.NET,Unity,Castle等等所包含的,它很輕量級性能上非常高。2016-04-04解讀ASP.NET 5 & MVC6系列教程(5):Configuration配置信息管理
這篇文章主要介紹了ASP.NET 5中Configuration配置信息管理,需要的朋友可以參考下。2016-06-06決定何時使用 DataGrid、DataList 或 Repeater(ASP.NET 技術(shù)文章)
決定何時使用 DataGrid、DataList 或 Repeater(ASP.NET 技術(shù)文章)...2006-10-10