标签: | 页面传值 |
在说方法之前,先看看为什么要传值。
在ASP.NET中,浏览器和Web服务器之间的连接是所谓的“无状态连接”。整个连接过程如下:
1、连接到服务器 所以,才会用下面这六种方法来达到保存特定的用户信息或页面信息的目的。
第一种方法:
通过URL链接地址传递,也即QueryString。
使用QuerySting在页面间传递值已经是一种很老的机制了,这种方法的主要优点是实现起来
非常简单,然而它的缺点是传递的值是会显示在浏览器的地址栏上的(
不安全),同时又不能传递对象,但是在传递的值少而安全性要求不高的情况下,这个方法还是一个不错的方案。
send.aspx: protected void Button1_Click(object sender, EventArgs e) { Response.Redirect("Default2.aspx ?valuename=XXXX"); } receive.aspx: string valueuser = Request.QueryString["valuename"] .ToString();
或
string valueuser =
Request.Params["valuename"]
.ToString();
这样就可以得到参数值了。
第二种方法:
第三种方法: 它是针对具体用户的一种传值方法,参数值会跟着用户走,直到清除或退出。 注意:在Session变量存储过多的数据会消耗比较多的服务器资源,在使用session时应该慎重,当然了,我们也应该使用一些清理动作来去除一些不需要的session来降低资源的无谓消耗。 Session.Remove("valuename");
第四种方法: 针对所有站点浏览用户的一种传值方法,是全局的。 Application的原理是在服务器端建立一个状态变量,来存储所需的信息。 注意:首先,这个状态变量是建立在内存中的,其次,这个状态变量是可以被网站的所有页面访问的。第三,就算一个用户关闭页面,其他用户打开页面,也还是会可以读取这个变量。这就意味着它只能存储一些要公布的信息,而不能存储一些比较个人的信息了!
第五种方法: 这个方法相比上面介绍的方法稍微复杂一点,但在页面间值传递中却是特别有用的,使用该方法可以在另一个页面以对象属性的方式来存取显露的值,当然了,使用这种方法,需要额外写一些代码以创建一些属性以便可以在另一个页面访问它,但是,这个方式带来的好处也是显而易见的。总体来说,使用这种方法是简洁的同时又是面向对象的。 如果在asp.net 2.0中还可以这样用:通过PreviousPage PreviousPage d = Context.Handler as PreviousPage ; 也可以这样用: 如果页面中用到了MasterPage的话 Server.Transfer 传递的 PreviousPage就无效了,不知道这是什么原因.所以在用到MasterPage的话,最好用Session或是Context.Items["valuename"]来实现.
第六种方法: 用cookie。 它会在关闭浏览器后,还保存在用户端,这种方法一般建议用在用户信息值的保存,也就是与用户相关的信息。 |