除了常用的Get,Post,Session,Application等页面间可传递参数的方法,还有新的方法,这应该是Asp.net独有的吧
B页面取A页面的值
页面A代码
public partial class Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
public string F
{
get { return this.TextBox1.Text.ToString(); }
set { this.TextBox1.Text = value; }
}
public string M
{
get { return this.TextBox2.Text.ToString(); }
set { this.TextBox2.Text = value; }
}
protected void Button1_Click(object sender, EventArgs e)
{
Server.Transfer("Default2.aspx");
// 注意下,地址栏没变
//用Response.Redirect不行……
//Response.Redirect("Default2.aspx");
//这的解释http://topic.csdn.net/t/20051227/21/4484983.html
}
}
页面B的代码
Code
public partial class Default2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Default s;
if (Context.Handler is Default)
{
s = (Default)Context.Handler;
Label1.Text = s.F + "---"+ s.M;
}
}
}
应该注意到,页面Default.aspx.cs本身就是一个类,这样的话可以在页面二中直接使用这个类,将页面一需要传递的参数
封装一下,供外界访问
一个页面接受多个页面传递的参数,对结果统一处理
1.新建参数类及接
/**////
///QueryParams 的摘要说明
///
public class QueryParams
{
private string staDate;
private string endDate;
/**////
/// 开始时间
///
public string StaDate
{
get { return this.staDate; }
set { this.staDate = value; }
}
/**////
/// 结束时间
///
public string EndDate
{
get { return this.endDate; }
set { this.endDate = value; }
}
}
/**////
/// 定义查询接口。
///
public interface IQueryParams
{
/**////
/// 参数
///
QueryParams Parameters{get;}
}
2.多个页面中要继承该接口
public partial class Default3 : System.Web.UI.Page,IQueryParams
{
private QueryParams param;
public QueryParams Parameters
{
get
{
return param;
}
}
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
param = new QueryParams();
param.StaDate = this.TextBox1.Text.ToString();
param.EndDate = this.TextBox2.Text.ToString();
Server.Transfer("Default4.aspx");
}
}
3.别的页面同样处理
4.统一处理页面
public partial class Default4 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
QueryParams queryParams = new QueryParams();
IQueryParams queryInterface;
//实现该接口的页面
//与Default2.asp相比,主要是Context.Handler的类型不同
if (Context.Handler is IQueryParams)
{
queryInterface = (IQueryParams)Context.Handler;
queryParams = queryInterface.Parameters;
}
Label1.Text = "StaDate:" + queryParams.StaDate + "
EndDate:" + queryParams.EndDate;
}
}
注意下“Response.Redirect(url)和Server.Transfer(url)的用法”是不同的……
还有“Context.Handler”