ASP.NET中使用Server.Transfer()方法在页间传值
2024-07-10 12:57:27
供稿:网友
国内最大的酷站演示中心!
asp.net server.transfer()是在两个页面之间进行传值的好方法,从a页面transfer到b页面时,就可以在b页面通过context.handler获得a页面的一个类的实例,从而在b调用a的各个成员对象。
下面的示例建立了webform1和webform2,通过server.transfer()方法演示在webform2中读取webform1的文本框、读取属性、通过context传值、调用webform1的方法等:
webform1上放置一个textbox1和一个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 窗体设计器生成的代码
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上放置一个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 窗体设计器生成的代码
override protected void oninit(eventargs e)
{
initializecomponent();
base.oninit(e);
}
private void initializecomponent()
{
this.load += new system.eventhandler(this.page_load);
}
#endregion
}
补充说明,就是transfer方法的第二个参数指示是否保留页面的form和querrystring的值,你可以试着把它设为false,则在webform2中将读不到textbox1的值。