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

ASP.NET页面之间传值的常用方法

2014-03-12 15:27 483 查看
本文内容转自:http://www.blueidea.com/microsoft/vs2010/2010_con/2010070901.html

1、使用QueryString变量

QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中。如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法。但是对于传递数组或对象的话,就不能用这个方法了。

优点:1)使用简单,对于安全性要求不高时传递数字或是文本值非常有效。

缺点:1).缺乏安全性,由于它的值暴露在浏览器的URL地址中的。

2).不能传递对象。

用途:后台管理页中,获取修改信息的ID

实例:

a.aspx的C#代码

1 private void Button1_Click(object sender, System.EventArgs e)
2 {
3 string s_url;
4 s_url = "b.aspx?name=" + Label1.Text;
5 Response.Redirect(s_url);
6 }

b.aspx中C#代

1 private void Page_Load(object sender, EventArgs e)
2 {
3 Label2.Text = Request.QueryString["name"];
4 }

2、使用Application 对象变量

Application变量在整个应用程序生命周期中都是有效的,类似于使用全局变量一样,所以可以在不同页面中对它进行存取。它和Session变量的区别在于,前者是所有的用户共用的全局变量,后者是各个用户独有的全局变量。

举个例子来解释:

网站访问的计数器变量一般采用Application变量,多个请求访问时共享这一个变量,均可对它进行操作,该变量可以被整个应用程序的各个页面直接使用。

用户登陆的帐号名一般采用Session变量,多个请求访问时有各自的Session变量,只能对自己的该Session变量进行操作,整个应用程序的各个页面直接使用这个变量来获得用户的基本信息。

优点:1).使用简单,消耗较少的服务器资源。

2).不仅能传递简单数据,还能传递对象。

3).数据量大小是不限制的。

缺点:1).作为全局变量容易被误操作。

用途:网站访问的计数器变量一般采用Application变量。

实例:

a.aspx的C#代码

1 private void Button1_Click(object sender, System.EventArgs e)
2 {
3 string Name1Value = "HelloName1";
4 int Name2Value = 1234567;
5 Application["Name1"] = Name1Value;
6 Application["Name2"] = Name2Value;
7 }

b.aspx中C#代码

1 private void Page_Load(object sender, System.EventArgs e)
2 {
3 string myName1Value;
4 int myName2Value;
5 myName1Value = Application["Name1"].ToString();
6 myName2Value = (int)Application["Name2"];
7 }

3、使用Session变量

这个应该是最常见的方法了!Session用于保存每个用户的专用信息.她的生存期是用户持续请求时间再加上一段时间(默认是20分钟).Session变量和Application变量非常类似,它们的区别也已经在上面关于Application变量时提到了。

优点:1).使用简单,不仅能传递简单数据类型,还能传递对象。

2).数据量大小是不限制的。

缺点:1).在Session变量存储大量的数据时会消耗较多的服务器资源。

用途:会员和管理员登陆时的用户名采用Session变量保存,还有验证码也可采用Session变量保存,从而与用户输入的值进行比较

实例:

a.aspx的C#代码

1 private void Button1_Click(object sender, System.EventArgs e)
2 {
3 Session["name"] = Label.Text;
4 }

b.aspx中C#代码

1 private void Page_Load(object sender, EventArgs e)
2 {
3 string name;
4 name = Session["name"].ToString();
5 }

4、使用Cookie对象变量

这个也是大家常使用的方法,与Session一样,Cookie对象也是对每一个用户而言的,但是有个本质的区别,即Cookie是存放在客户端的,而session是存放在服务器端的。

优点:1).使用简单,是保持用户状态的一种非常常用的方法。

缺点:1).常常被人认为用来收集用户隐私而遭到批评。

用途:在购物网站中用户跨多个页面表单时可以用它来保持用户状态。

实例:

a.aspx的C#代码

1 private void Button1_Click(object sender, System.EventArgs e)
2 {
3 HttpCookie objCookie = new HttpCookie("myCookie","Hello,Cookie!");
4 Response.Cookies.Add(objCookie);
5 }

b.aspx中C#代码

1 private void Page_Load(object sender, System.EventArgs e)
2 {
3 string myName1Value;
4 myName1Value = Request.Cookies[ "myCookie" ].Value;
5 }

5、使用Server.Transfer方法

Server.Transfer是从当前的ASPX页面转到新的ASPX页面,服务器端执行新页并输出,在新页面中通Context.Handler来获得前一个页面传递的各种数据类型的值、表单数据、QueryString.由于重定向完全在服务器端完成,所以客户端浏览器中的URL地址是不会改变的。调用Server.Transfer时,当前的ASPX页面终止执行,执行流程转入另一个ASPX页面,但新的ASPX页面仍使用前一ASPX页面创建的应答流。

优点:1).直接在服务器端重定向,使用简单方便,减少了客户端对服务器端提出请求。

2).可以传递各种数据类型的值和控件的值。

缺点:1).客户端浏览器中的URL地址是不改变,会导致在新的页面可能出现一些意想不到的问题。比如如果源页面和目的页面不在同一个虚拟目录或其子目录下,那么使用相对路径的图片、超链接都会导致错误的指向。

实例:

a.aspx的C#代码

1 public string Name
2 {
3 get{ return Label1.Text;}
4 }
5 ?private void Button1_Click(object sender, System.EventArgs e)
6 {
7 Server.Transfer("b.aspx");
8 }

b.aspx中C#代码

1 private void Page_Load(object sender, EventArgs e)
2 {
3 a newWeb; //实例a窗体
4 newWeb = (source)Context.Handler;
5 string name;
6 name = newWeb.Name;
7 }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: