ASP.NET学习之页面传值(6)_Server.Transfer传值

第一种情况:两个页面之间要进行大量数据传递的设置方法:
【关键点:
需求:页面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>
原文地址:https://www.cnblogs.com/Yisijun/p/4588137.html