ASP.NET页面间传值方式2014-08-191.使用QueryString, 如....?id=1; response. Redirect()....2.使用Session变量3.使用Server.Transfer4.使用Cookie传值5.Application6.<input type="hidden"></input>7.数据库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的值。
private void Button1_Click(object sender, System.EventArgs e){// Value sent using HttpResponseResponse.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”按钮时,运行如下代码:HttpCookie cName = new HttpCookie("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的值赋给它。
// Session 创建Session["Name"] = txtName.Text; Response.Redirect("WebForm5.aspx");// 下面的代码显示如何从Session中取值// 代码放在其它页面中if(Session["Name"] != null) Label3.Text = Session["Name"].ToString();