ASP.NET页面传值汇总(Session/Server.Transfer/Query String/Cookie/Application)
2009-07-22 21:14
651 查看
ASP.NET页面传值汇总(Session/Server.Transfer/Query String/Cookie/Application)
原文地址:http://www.codeproject.com/KB/aspnet/TransferingValues.aspx 介绍: 在网页应用程序的开发中,页面之间的传值应该是最常见的问题了。 在这篇文章里,azamsharp 将为我们介绍一些ASP.NET页面传值的方式。本文所举的例子非常简单,仅仅包含了一个文本框和几个按钮,当按钮点击时文本框中的字符串将会以不同的方 式传递到另外的页面去。 1. Response.Redirect (或称 Query String 方式、URL方式) Response.Redirect("WebForm5.aspx"); 首先让我们看看 Response.Redirect 方法,这应该是最简单的了,当我们点击Response.Redirect按钮后触发上面的那行代码即可。在这里跟大家分享一个小技巧:有些时候我们会把 上面的代码放在try{ ... }catch() 中去,也就是说当我们捕获异常,并把异常传递给另一个网页。如果我们尝试这样做,也许会得到一个“System.Threading” 异常,这是因为我们跳转到了另外一个页面,而原来的页面线程仍然在运行中。可以这样来解决此问题: Response.Redirect("WebForm5.aspx",false); 这意味着告诉编译器去“WebForm5.aspx”, 同时“false”参数告诉编译器不要停止在原来页面上的活动, 这方面我们可以参见System.Threading类。 在下面的代码中,“txtName”是待传值的文本框的名字,那个跟在“?”后面的“Name” 是一个临时response变量的标志,它承载了txtName的值。 privatevoidButton1_Click(objectsender,System.EventArgse) { //ValuesentusingHttpResponse Response.Redirect("WebForm5.aspx?Name="+txtName.Text); } OK,到此位置,我们已经完成了Response的传值。但是,我们在"WebForm5.aspx"中怎样接收传来的值呢?不要急,我们将 在"WebForm5.aspx"的page_Load事件中写下面的代码。首先,我们要确认传来的值不是“null”,如果不是“null”,我们就可 以用Label将这个值显示出来。 注:当我们使用Response.Redirect传递变量时,所有的变量都能在浏览器的URL中看到,我们不能用这种方法来传递重要的机密数据,如信用卡号等。 if(Request.QueryString["Name"]!=null) Label3.Text=Request.QueryString["Name"]; 2. Cookies 方式 接下来是用cookies, Cookies由服务端创建,但保存在客户端,当我们点击“Cookies”按钮时,运行如下代码: HttpCookiecName=newHttpCookie("Name"); cName.Value=txtName.Text; Response.Cookies.Add(cName); Response.Redirect("WebForm5.aspx"); 首先,我们创建了一个名叫“cName”的cookie实例,由于一个cookie实例可以保存多个值,我们需要告诉编译器这个cookie将保存 “Name”值,并把txtName.Text的值赋给它,并把它加到"输出流” 中,并使用Response.Redirect输出到另外一个网页。 然后让我们看看怎样在目标页面中取出这个cookie中的值: if(Request.Cookies["Name"]!=null) Label3.Text=Request.Cookies["Name"].Value; 显然,步骤跟上一种方法非常相似,只是使用Request.Cookies代替了Request.QueryString。 注:一些浏览器是不支持Cookies的。 3. Session 变量 接下来我们看看在服务端维持的Session变量。 Session在用户向服务端发出首次请求时被创建,而在用户关闭浏览器或异常发生时终止(其实还有过期的情况)。下面的代码是用Session来传值的 例子。 我们可以看到 Session 为用户创建了“Name” 键,并把TextBox的值赋给它。 Code //Session创建 Session["Name"]=txtName.Text; Response.Redirect("WebForm5.aspx"); //下面的代码显示如何从Session中取值 //代码放在其它页面中 if(Session["Name"]!=null) Label3.Text=Session["Name"].ToString(); 4. Application 变量 有些时候,我们需要一个值能够在所有的页面中访问,这时候我们可以使用Application变量。 如下列代码所示,一旦我们创建了Application变量并赋值,就可以在网站(项目)的所有页面中获得它。 Code //为Application变量赋值 Application["Name"]=txtName.Text; Response.Redirect("WebForm5.aspx"); //从Application变量中取出值 if(Application["Name"]!=null) Label3.Text=Application["Name"].ToString(); 5. Server.Transfer方式(或称HttpContext方式) 我们还可以使用 Server.Transfer方式(或称HttpContext方式)在页面之间传递变量,此时,要传递的变量可以通过属性或方法来获得,使用属性将会比较容易一些。好,让我们在第一个页面中来写一个用来获得TextBox值的属性: Code publicstringGetName { get{returntxtName.Text;} } 我们需要使用Server.Transfer把这个值发送到另外一个页面中去,请注意Server.Transfer只是发送控件到一个新的页面去,而并不会使浏览器重定向到另一个页面。所以,我们我们在地址栏中仍然看到的是原来页面的URL。如下代码所示: Server.Transfer("WebForm5.aspx"); 接下来,我们到"WebForm5.aspx"看看: Code //YoucandeclarethisGloballyorinanyeventyoulike WebForm4w; //GetsthePage.ContextwhichisAssociatedwiththispage w=(WebForm4)Context.Handler; //AssigntheLabelcontrolwiththeproperty"GetName"whichreturnsstring Label3.Text=w.GetName; 结束语: 如我们看到的那样,各种传值方式都各有优劣,在不同的情况下选择适当的方式是很重要的。 |
相关文章推荐
- ASP.NET页面传值汇总 (Session / Server.Transfer / Query String / Cookie / Application )
- ASP.NET页面传值汇总 (Session / Server.Transfer / Query String / Cookie / Application )
- ASP.NET页面传值汇总 (Session / Server.Transfer / Query String / Cookie / Application )
- ASP.NET页面传值汇总 (Session / Server.Transfer / Query String / Cookie / Application )
- ASP.NET中实现页面间的参数传递 QueryString/Application/Session/Cookie
- 【C#.NET】ASP.NET中实现页面间的参数传递 QueryString\Application\Session\Cookie
- ASP.NET中实现页面间的参数传递 QueryString/Application/Session/Cookie
- ASP.NET中实现页面间的参数传递 QueryString\Application\Session\Cookie
- ASP.NET中实现页面间的参数传递 QueryString/Application/Session/Cookie (转载)
- ASP.NET中实现页面间的参数传递 QueryString\Application\Session\Cookie
- 【C#.NET】ASP.NET中实现页面间的参数传递 QueryString\Application\Session\Cookie
- ASP.NET菜鸟进阶-页面间参数传递问题集合 QueryString Session Cookies Application
- ASP.NET页面传值之Server.Transfer
- .NET中实现页面间的参数传递 QueryString\Application\Session\Cookie(转载)
- 在两个ASP.NET页面之间传递变量 (QueryString,Session和Server.Transfer)
- ASP.NET页面传值之Server.Transfer 和Response.Direct
- Asp.Net中的脚本回调和Server.Transfer页面传值
- ASP.NET页面之间传值Server.Transfer(4)
- Asp.Net中的脚本回调和Server.Transfer页面传值
- ASP.NET整理:Cookie,Application,Session,页面生命周期