ASP.NET跨页传值方法总结

来源:互联网 发布:双重照片软件 编辑:程序博客网 时间:2024/06/06 17:15

source.cs 
  

public string Name
  
{
   
get
   
{
    
return txtName.Text;
   }

  }
 
  
public string Pwd
  
{
   
get
   
{
    
return txtPwd.Text;
   }

  }
 
  
private void btnCommit_Click(object sender, System.EventArgs e)
  
{
   
//1.使用QueryString方式传值
   
//QueryString是一种非常简单的传值方式,它可以将传送的值显示在浏览器的地址栏中,
   
//如果想要传递一个安全性不太重要或一个结构简单的数值时,用此法最容易。但如果要
   
//传递的信息涉及安全性或值的类型是较为复杂的array(数组)或object(对象)时,
   
//就不能和此方法。
   
//实现:
   string url;
   url 
= "distination.aspx Name=" + txtName.Text + "&Pwd=" + txtPwd.Text;
   Response.Redirect(url); 
   
//2.使用Application对象变量
   
//Application对象在服务器端生成一个状态变量来存储所需的信息,该Application对象
   
//变量的可视范围涵盖全部使用者,也就是只要正在使用这个网页程序的程序都可以存取
   
//这个状态变量。这就意味着它只能存储一些要公布的信息,而对于那些涉及个人及安全
   
//的信息就不能用它来存取。Application对象变量有2个常用的方法,Lock和UnLock方法,
   
//主要用于处理多个用户对存储在Application变量中的数据进行写入的问题。Lock方法锁
   
//定全部的Application变量,从而阻止其他用户修改Application对象的变量值,UnLock
   
//方法则解除对Application对象变量的锁定。
   
//例如聊天室的制作,也可以用Static对象变量来代替。
   
//实现:
   Application["Name"= txtName.Text;
   Application[
"Pwd"= txtPwd.Text;
   Server.Transfer(
"distination.aspx"); 
   
//3.使用Session对象变量
   
//Session对象变量和Application对象变量一样,都是用来存储跨网页程序的变量或是对象。
   
//但与Application对象变量不同的是,Session对象变量只针对单一网页使用者,各个连接的
   
//机器有各自的Session对象变量,不同的客户端无法相互存取。在Session变量使用过程中,
   
//当用户在应用程序中从一页移动到另一页时,存储在Session对象中的变量不会被放弃,只有
   
//当用户关掉浏览器或超过设定Session对象变量的有效时间时,Session变量才会消失。因此,
   
//Session对象变量若存储过多的数据则会消耗大量的服务器资源,在使用时尤其要注意控制数量。
   
//当然也可以利用Session对象的方法,如获至宝Remove、Clear来及时清理,以降低资源的消耗。
   
//实现:
   Session["Name"= txtName.Text;
   Session[
"Pwd"= txtPwd.Text;
   Server.Transfer(
"distination.aspx"); 
   
//4.使用Cookie对象变量
   
//Session对象变量和Application对象变量都是在服务器端产生的,与此不同,Cookie变量的数据
   
//是以文件形式放于客户端文件系统或客户端浏览器会话内的内存中,只含少量信息,并且可以永
   
//久存在或终止于所设定的时间,使用时配合ASP.NET的内置对象ResPonse和Request完成传值。另
   
//外,Cookie是与Web站点而不是具体页面关联的,不论用户请示浏览器站点中的哪个页面,浏览器
   
//和服务器都将交换Cookie信息。由于Cookie对象变量在客户端存取,不可避免地带来存取权限及
   
//安全性问题,对于用户而言,要慎用。
   
//实现:
   HttpCookie Name = new HttpCookie("Name");
   HttpCookie Pwd 
= new HttpCookie("Pwd");
   Name.Value 
= txtName.Text;
   Pwd.Value 
= txtPwd.Text;
   Response.AppendCookie(Name);
   Response.AppendCookie(Pwd);
   Server.Transfer(
"distination.aspx"); 
   
//5.使用server.Transfer方法
   
//server.Transfer把执行流程从当前的aspx页面转到同一服务器的另一个aspx页面,新的aspx页面
   
//仍然使用前一aspx页面创建的应答流,可以通过对象属性的方式来存取信息。使用该方法进行值传
   
//递需要额外创建一些属性以便在另一页面访问它,这种方法是面向对象的,简洁而有效。
   
//实现:
   
//在属性申明区写上相应的属性
   Server.Transfer("distination.aspx"); 
  }
 


distination.cs


private void Page_Load(object sender, System.EventArgs e)
  
{
   
if(!IsPostBack)
   
{
    
//1.使用QueryString方式接值
    if(Request.QueryString["Name"]!=null || Request.QueryString["Name"].Trim()=="")
    
{
     Response.Write(
"您的姓名为:" + Request.QueryString["Name"+ "<br>" + "您丢失的密码为:" + Request.QueryString["Pwd"]);
    }
 
    
//2.使用Application对象变量
    Application.Lock();
    Response.Write(
"您的姓名为:" + Application["Name"].ToString() + "<br>" + "您丢失的密码为:" + Application["Pwd"].ToString());
    Application.UnLock(); 
    
//3.使用Session对象变量
    Response.Write("您的姓名为:" + Session["Name"].ToString() + "<br>" + "您丢失的密码为:" + Session["Pwd"].ToString());
    Session.Remove(
"Name");
    
//或者用Clear方法
    Session.Remove("Pwd"); 
    
//4.使用Cookie对象变量
    Response.Write("您的姓名为:" + Request.Cookies["Name"].Value.ToString() + "<br>" + "您丢失的密码为:" + Request.Cookies["Pwd"].Value.ToString());
    
    
//5.使用server.Transfer方法
    source sc;
    sc 
= (source)Context.Handler;
    
//Context.Handler属性用来获得对页面实例对象的引用
    Response.Write("您的姓名为:" + sc.Name + "<br>" + "您丢失的密码为:" + sc.Pwd);
   }

}
 

 

补充:

 

1. 使用 Page.PreviousPage 属性,通过Server.Transfer 或修改服务器按钮控件 PostBackUrl 属性。


2. 使用中间页面,request.aspx -> mediator.htm -> target.aspx

原创粉丝点击