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的值。