asp.net web forms 給開發者提供了極好的事件驅動開發模式。然而這種簡單的應用程序開發模式卻給我們帶來了一些小問題,舉個例子,在傳統的asp應用程序中,你能夠通過post方法很容易的把一個值或多個值從一個頁面傳送到另一個頁面(request()/request.form()/request.querystring()),用同樣的方法在asp.net中實現有點麻煩。在這里,通過其他方式來解決這種情形。asp.net為我們提供了三種方式,一種是可以通過用querystring來傳送相應的值,再一種是通過session變量來傳送相應的值,還有就是通過server.transfer方法來實現。
一、使用querystring
querystring是一種非常簡單的傳值方式,其缺點就是會把要傳送的值顯示在瀏覽器的地址欄中,并且在此方法中不能夠傳遞對象。如果你想傳遞一個安全性不是那么太重要或者是一個簡單的數值時,用此方法最好不過了。下面通過一個小例子來完成傳值工作,步驟如下:
1、創建一個web form
2、在新建的web form中放置一個button1,在放置兩個textbox1,textbox2
3、為button按鈕創建click事件
代碼如下:
private void button_click(object sender,system.eventargs e)
{
string url;
url="webform2.aspx?name="+textbox1.text + "&email="+textbox2.text;
response.redirect(url);
}
4、新建一個目標頁面命名為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"];
}
運行,即可看到傳遞后的結果了。
二、使用session變量
使用session變量傳值是一種最常見的方式了,此中方式不僅可以把值傳遞到下一個頁面,還可以交叉傳遞到多個頁面,直至把session變量的值removed后,變量才會消失。舉個例子看看:
1、創建一個web form
2、在新建的web form中放置一個button1,在放置兩個textbox1,textbox2
3、為button按鈕創建click事件
代碼如下:
private void button_click(object sender,system.eventargs e)
{
session["name"]=textbox1.text;
session["email"]=textbox2.text;
response.redirect("webform2.aspx");
}
4、新建一個目標頁面命名為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");
}
運行,即可看到傳遞后的結果了。
三、使用server.transfer
雖然這種方法有點復雜,但也不失為一種在頁面傳值的方式。
舉個例子看看:
1、創建一個web form
2、在新建的web form中放置一個button1,在放置兩個textbox1,textbox2
3、為button按鈕創建click事件
代碼如下:
private void (object sender,system.eventargs e)
{
server.transfer("webform2.aspx");
}
4、創建過程來返回textbox1,textbox2控件的值代碼如下:
public string name
{
get {return textbox1.text;}
}
public string email
{
get{return textbox2.text;}
}
5、新建一個目標頁面命名為webform2
6、在webform2中放置兩個label1,label2
在webform2的page_load中添加如下代碼:
private void page_load(object sender,system.eventargs e)
{
//創建webform的實例
webform1 wf1;
//獲得實例化的句柄
wf1=(webform1)context.handler;
label1.text=wf1.name;
label2.text=wf1.email;
}
常見的就是這三種方法。
新聞熱點
疑難解答
圖片精選