第一种情况:两个页面之间要进行大量数据传递的设置方法:
【关键点:
需求:页面A和页面B之间要传递多个值(X1,X2,……)。A传值,B接收
1、在A中定义所有要传递的值的属性,然后使用Server.Transfer("B.aspx")进行页面跳转
2、在B中,定义一个A类型的变量C,然后将Context.Handler显示转换成A类型赋值给变量
3、通过C.X1,C.X2……来取得传递的值
】
IndexPage.aspx页面
<form runat="server">
<div>
<input id="Text1" type="text" runat="server"/>
<input id="Text2" type="text" runat="server"/>
<input id="Button1" value="传值" type="button" runat="server" onserverclick="ok_ServerClick"/>
</div>
</form>
IndexPage.aspx.cs后台代码:
public string Name
{
get { return Text1.Value; }
}
public string Pass
{
get { return Text2.Value; }
}
public void ok_ServerClick(object sender, EventArgs e)
{
//页面跳转
Server.Transfer("ResultIndex.aspx");
}
ResultPage.aspx.cs后台代码:
接收数据
protected void Page_Load(object sender, EventArgs e)
{
indexPage ind = (indexPage)Context.Handler; //Context.Handler显示转换成IndexPage类型的//获得实例化的句柄
string name = ind.Name;
string pass = ind.Pass;
txt.Value = "用户名:" + name + "-----密码:" + pass;
}
第二种情况:多个查询页面共用一个结果页面的设置方法:
【注意点:
1、将要查询参数都定义在一个类P里面
2、定义一个接口,该接口中只有一个方法。P返回类型的方法
3、让要查询页面实现这个接口IXXX,在里面创建一个P类对象,给里面的需要的属性赋值
4、在接收页面,实例化一个P对象,申明一个接口变量
判断实例化句柄是不是接口类型(Context.Handler is IXXX)
如果是,就将实例化句柄赋给接口变量,在调用接口里面的方法赋给P的实例化对象。
最后,用实例化对象就可以取值了
】
第一步:先定义一个类:LoginParams【里面定义的是要传递的参数的属性】
public class LoginParams
{
public string Name { set; get; }
public string Pass { set; get; }
}
第二步:定义一个接口:ILogin。里面写一个获得LoginParams类实例的方法
interface ILogin
{
LoginParams loginp { get; } //定义一个返回类型是LoginParams类的方法
}
第三步:在发送数据的页面实现ILogin接口:
public partial class indexPage : System.Web.UI.Page,ILogin
{
//定义一个参数类的变量
private LoginParams lp;
protected void Page_Load(object sender, EventArgs e)
{
}
//实例化类对象
lp = new LoginParams();
//给参数赋值
lp.Name = Text1.Value;
lp.Pass = Text2.Value;
//页面跳转
Server.Transfer("ResultIndex.aspx");
}
//实现接口中的方法
public LoginParams loginp
{
get
{
return lp;
}
}
}
第四步:在接收数据的页面做判断在进行数据接收:
public partial class ResultIndex : System.Web.UI.Page
{
LoginParams lp = new LoginParams();
ILogin ilogin = null;
protected void Page_Load(object sender, EventArgs e)
{
if(Context.Handler is ILogin){
ilogin =(ILogin)Context.Handler;
lp = ilogin.loginp;
}
txt.Value = lp.Name + "___" + lp.Pass;
}
}
【前端页面设置:】
IndexPage.aspx页面
<form runat="server">
<div>
<input id="Text1" type="text" runat="server"/>
<input id="Text2" type="text" runat="server"/>
<input id="Button1" value="传值" type="button" runat="server" onserverclick="ok_ServerClick"/>
</div>
</form>