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 }
总结了一哈页面间传值的几种常用方法,其中70%的内容是参考以下网站:http://blog.csdn.net/lsd123/archive/2009/08/12/4440019.aspx
和http://www.chinaz.com/Program/.NET/030110J042010.html,再经本人总结,添加了一些其他的内容。
小弟第一次发帖,希望各位支持一哈,嘻嘻......
|
请发表评论