ASP.NET中使用Server.Transfer()方法在頁(yè)間傳值
2024-07-10 12:57:27
供稿:網(wǎng)友
國(guó)內(nèi)最大的酷站演示中心!
asp.net server.transfer()是在兩個(gè)頁(yè)面之間進(jìn)行傳值的好方法,從a頁(yè)面transfer到b頁(yè)面時(shí),就可以在b頁(yè)面通過(guò)context.handler獲得a頁(yè)面的一個(gè)類的實(shí)例,從而在b調(diào)用a的各個(gè)成員對(duì)象。
下面的示例建立了webform1和webform2,通過(guò)server.transfer()方法演示在webform2中讀取webform1的文本框、讀取屬性、通過(guò)context傳值、調(diào)用webform1的方法等:
webform1上放置一個(gè)textbox1和一個(gè)button1,程序如下:
public class webform1 : system.web.ui.page
{
protected system.web.ui.webcontrols.textbox textbox1;
protected system.web.ui.webcontrols.button button1;
private void page_load(object sender, system.eventargs e)
{
context.items.add("context","context from form1");
}
public string time
{
get{return datetime.now.tostring();}
}
public string testfun()
{
return "function of webform1 called";
}
#region web 窗體設(shè)計(jì)器生成的代碼
override protected void oninit(eventargs e)
{
initializecomponent();
base.oninit(e);
}
private void initializecomponent()
{
this.button1.click += new system.eventhandler(this.button1_click);
this.load += new system.eventhandler(this.page_load);
}
#endregion
private void button1_click(object sender, system.eventargs e)
{
server.transfer("webform2.aspx", true);
}
在webform2上放置一個(gè)literal1控件,程序如下:
public class webform2 : system.web.ui.page
{
protected system.web.ui.webcontrols.literal literal1;
private void page_load(object sender, system.eventargs e)
{
string strtxt="";
webform1 oform=(webform1)this.context.handler;
strtxt+="value of textbox:"+request.form["textbox1"] +"<br>";
strtxt+="time property:"+oform.time +"<br>";
strtxt+="context string:"+context.items["context"].tostring() +"<br>";
strtxt+=oform.testfun() +"<br>";
literal1.text =strtxt;
}
#region web 窗體設(shè)計(jì)器生成的代碼
override protected void oninit(eventargs e)
{
initializecomponent();
base.oninit(e);
}
private void initializecomponent()
{
this.load += new system.eventhandler(this.page_load);
}
#endregion
}
補(bǔ)充說(shuō)明,就是transfer方法的第二個(gè)參數(shù)指示是否保留頁(yè)面的form和querrystring的值,你可以試著把它設(shè)為false,則在webform2中將讀不到textbox1的值。