您的位置:首页 > 编程语言 > ASP

ASP.NET跨页传值方法集锦

2006-11-09 13:05 357 查看
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);


}


}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: