還有一種是利用Session變量來(lái)傳值,這種也比較常用。利用Session比較靈活,可以
在多個(gè)頁(yè)面間進(jìn)行傳值。當(dāng)調(diào)用其remove后,Session即失效。同樣用兩張頁(yè)面舉個(gè)例:
WebForm1.aspx.cs中寫(xiě)入如下代碼:
Session["name"]=txtname.Text;
Response.Redirect("WebForm2.aspx");
下面在WebForm1.aspx.cs中取出Session的值:
lblname.Text=Session["name"].ToString(); //因?yàn)槿〕鰜?lái)的是一個(gè)對(duì)象,所以必須轉(zhuǎn)換類型
Session.Remove("name");? //使Session失效。
第三種方式是利用Request對(duì)象來(lái)取值,(注:這里使用的是html控件)這種比較簡(jiǎn)潔。實(shí)現(xiàn)如下:
在WebForm1.aspx中:
Name:
在WebForm2.aspx.cs中某個(gè)事件寫(xiě)入:Response.Write(Request.Form["txtname"]);
當(dāng)點(diǎn)擊submit按鈕后,即通過(guò)Request.Form[”txtname”]取出了值,
第四種方法是利用Server對(duì)象的Transfer()方法來(lái)傳值,它接收一個(gè)頁(yè)面對(duì)象。
下面用代碼來(lái)講解一下這種實(shí)現(xiàn)方式:
在WebForm1.aspx 的某個(gè)事件中寫(xiě)入如下代碼:Server.Transfer("WebForm2.aspx"); //傳遞頁(yè)面對(duì)象
接著就可以在WebForm2.aspx.cs中獲取WebForm1的頁(yè)面對(duì)象。
if(Context.Handler is WebForm1) //判斷傳遞過(guò)來(lái)的是否WebForm1,因?yàn)榭赡軙?huì)有多個(gè)傳遞對(duì)象?! ?br>{
WebForm1 f1=(WebForm1)Context.Handler; //通過(guò)Context.Handler來(lái)創(chuàng)建一個(gè)WebForm1的頁(yè)面對(duì)象,返 回一個(gè)object
Response.Write("Hey,I get it with Context Handler "+((TextBox)f1.FindControl("TextBox1")).Text+"
");??
}
//最后通過(guò)調(diào)用WebForm1對(duì)象的FinControl()方法來(lái)查找WebForm1中名為"TextBox1"的一個(gè)文本控件,在此也可以換成其它的控件,不管查找的是哪一種控件,都必須將其強(qiáng)制轉(zhuǎn)換為其類型,本示例中為T(mén)extBox,最后調(diào)用其屬性Text,獲取在TextBox1中的值,達(dá)到傳值的效果。
這種方法同樣很靈活,可以傳遞多個(gè)頁(yè)面對(duì)象,而不是傳遞值,因此當(dāng)獲取到頁(yè)面對(duì)象的時(shí)候就可以獲取此頁(yè)面對(duì)象中的某些控件的值或其它的數(shù)據(jù)。
(注:以上幾種方法,除了Request.Form()這種傳值方法使用的是HTML控件外,其它幾種都是使用WEB控件)
聯(lián)系客服