五月综合缴情婷婷六月,色94色欧美sute亚洲线路二,日韩制服国产精品一区,色噜噜一区二区三区,香港三级午夜理伦三级三

您現(xiàn)在的位置: 365建站網(wǎng) > 365文章 > Web頁(yè)面之間參數(shù)傳遞方法

Web頁(yè)面之間參數(shù)傳遞方法

文章來(lái)源:365jz.com     點(diǎn)擊數(shù):478    更新時(shí)間:2011-03-03 14:07   參與評(píng)論
WEB環(huán)境中頁(yè)面之間的數(shù)據(jù)傳遞可以通過(guò)傳統(tǒng)的URL參數(shù)傳遞和會(huì)話級(jí)傳遞以及通過(guò)ASP.NET服務(wù)器控件傳遞頁(yè)面值。

1使用Querystring

Querystring是一種非常簡(jiǎn)單的傳遞參數(shù)的方式,其缺點(diǎn)就是會(huì)把要傳送的值顯示在瀏覽器的地址欄中(不安全),同時(shí)在使用querystring傳值得時(shí)候不能傳遞對(duì)象,參數(shù)的長(zhǎng)度不能大于1024字節(jié),當(dāng)參數(shù)中有中文得時(shí)候,通常需要使用HttpUlitity.UrlEncode方法來(lái)對(duì)參數(shù)進(jìn)行編碼和解嗎。當(dāng)然如果你想傳遞一個(gè)安全性不是那么太重要或者是一個(gè)簡(jiǎn)單的數(shù)值時(shí),用此方法最好不過(guò)了。下面通過(guò)一個(gè)小例子來(lái)完成參數(shù)傳遞過(guò)程

a.aspxC#代碼

private void Button1_Click(object sender System.EventArgs e)

{

string s_url;

s_url = "b.aspx?name=" + Label1.Text;

Response.Redirect(s_url);

}

b.aspxC#代碼

private void Page_Load(object sender EventArgs e)

{

Label2.Text = Request.QueryString["name"];

}

2.使用Application傳遞參數(shù)

使用Application變量傳遞參數(shù)是一種最常見的方法,Application對(duì)象的作用范圍是整個(gè)全局,也就是說(shuō)對(duì)所有用戶都有效。其常用的方法用LockUnLock。但是缺點(diǎn)在于使用Application得使用一般是相對(duì)于整個(gè)項(xiàng)目來(lái)說(shuō)相對(duì)靜止的變量,比如數(shù)據(jù)庫(kù)連接變量等。對(duì)于那些針對(duì)每一個(gè)用戶,每一個(gè)會(huì)話未必一樣得變量就不適用了。通常Application變量得值是在Config終指定。也可以在global.ascx中指定。例如:

a.aspxC#代碼

private void Button1_Click(object sender System.EventArgs e)

{

Application["name"] = Label1.Text;

Server.Transfer("b.aspx");

}

b.aspxC#代碼

private void Page_Load(object sender EventArgs e)

{

string name;

Application.Lock();

name = Application["name"].ToString();

Application.UnLock();

}

3使用Session變量

使用Session變量傳值是一種最常見的方式了,優(yōu)點(diǎn)此種方式不僅可以把值傳遞到下一個(gè)頁(yè)面,還可以交叉?zhèn)鬟f到多個(gè)頁(yè)面,直至把Session變量的值removed后,變量才會(huì)消失。但是使用Session變量往往會(huì)占用服務(wù)器端的內(nèi)存使用,所以再網(wǎng)頁(yè)流量很大的時(shí)候,Session便不能很好的完成傳值得任務(wù),由于session有一個(gè)timeout,所以在使用的時(shí)候?qū)τ脩舻貌僮饕灿幸欢ǖ挠绊?。例如?/SPAN>

創(chuàng)建一個(gè)web form

在新建的web form中放置一個(gè)button1,在放置兩個(gè)TextBox1TextBox2 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");

}

新建一個(gè)目標(biāo)頁(yè)面命名為webform2webform2中放置兩個(gè)Label1Label2webform2Page_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");

}

運(yùn)行即可看到傳遞后的結(jié)果了。

4使用cookie方法傳遞參數(shù)

這個(gè)也是大家常使用的方法,cookie是瀏覽器端的文本文件,通過(guò)對(duì)它的讀、寫,可以很方便的實(shí)現(xiàn)頁(yè)面間的與Session一樣,其是針對(duì)每一個(gè)用戶而言的,但是有個(gè)本質(zhì)的區(qū)別,即Cookie是存放在客戶端的,而session是存放在服務(wù)器端的。而且Cookie的使用要配合ASP.NET內(nèi)置對(duì)象Request來(lái)使用。cookie是瀏覽器端的文本文件,通過(guò)對(duì)它的讀、寫,可以很方便的實(shí)現(xiàn)頁(yè)面間的參數(shù)傳遞,而且作為保存時(shí)間,也就是數(shù)據(jù)得有效期來(lái)說(shuō),確是保存得最好的。但是其缺點(diǎn)是安全性較差,大小受限,不能保存對(duì)象。例如:

a.aspxC#代碼

private void Button1_Click(object sender System.EventArgs e)

{

HttpCookie cookie_name = new HttpCookie("name");

cookie_name.Value = Label1.Text;

Reponse.AppendCookie(cookie_name);

Server.Transfer("b.aspx");

}

b.aspxC#代碼

private void Page_Load(object sender EventArgs e)

{

string name;

name = Request.Cookie["name"].Value.ToString();

}

5 使用Server.Transfer方法

這個(gè)可以說(shuō)是面象對(duì)象開發(fā)所使用的方法,其使用Server.Transfer方法把流程從當(dāng)前頁(yè)面引導(dǎo)到另一個(gè)頁(yè)面中,新的頁(yè)面使用前一個(gè)頁(yè)面的應(yīng)答流,所以這個(gè)方法是完全面象對(duì)象的,簡(jiǎn)潔有效。它在服務(wù)器端直接重定向效率高。而且它可以傳遞上一個(gè)頁(yè)面的提交值。比如:A頁(yè)面提交值到B頁(yè)面,B頁(yè)面TransferC頁(yè)面,C頁(yè)面同樣可以收到A頁(yè)面提交的值。但是它的缺點(diǎn)在于不能刷新頁(yè)面,比如:A頁(yè)面提交登錄信息到B頁(yè)面,B頁(yè)面處理后Transfer再到A,A頁(yè)面得不到刷新,指定了過(guò)期也不行。如果A、B頁(yè)面不在同一個(gè)目錄下,我們還會(huì)發(fā)現(xiàn)更多意想不到的結(jié)果,使用相對(duì)鏈接的圖片、超鏈接的指向都改變了,造成這種原因是B頁(yè)面讀取A頁(yè)面內(nèi)容卻以B頁(yè)面的身份輸出,所以路徑改變了。例如:

a.aspxC#代碼

public string Name

{

get{ return Label1.Text;}

}

private void Button1_Click(object sender System.EventArgs e)

{

Server.Transfer("b.aspx");

}

b.aspxC#代碼

private void Page_Load(object sender EventArgs e)

{

a newWeb; //實(shí)例a窗體

newWeb = (source)Context.Handler;

string name;

name = newWeb.Name;

}

      以上五種在Web頁(yè)面之間傳遞值的方法它們各有其優(yōu)缺點(diǎn)我們通過(guò)他們的優(yōu)缺點(diǎn)比較發(fā)現(xiàn)它們各自的特點(diǎn)。因而使用它們時(shí)要根據(jù)具體的實(shí)際情況選擇使用那一種方法不可一概而論。


如對(duì)本文有疑問(wèn),請(qǐng)?zhí)峤坏浇涣髡搲?,廣大熱心網(wǎng)友會(huì)為你解答??! 點(diǎn)擊進(jìn)入論壇

發(fā)表評(píng)論 (478人查看,0條評(píng)論)
請(qǐng)自覺(jué)遵守互聯(lián)網(wǎng)相關(guān)的政策法規(guī),嚴(yán)禁發(fā)布色情、暴力、反動(dòng)的言論。
昵稱:
最新評(píng)論
------分隔線----------------------------

其它欄目

· 建站教程
· 365學(xué)習(xí)

業(yè)務(wù)咨詢

· 技術(shù)支持
· 服務(wù)時(shí)間:9:00-18:00
365建站網(wǎng)二維碼

Powered by 365建站網(wǎng) RSS地圖 HTML地圖

copyright © 2013-2024 版權(quán)所有 鄂ICP備17013400號(hào)