QueryString参数传递和Session参数传递的对比
首先介绍一下几种数据类型
5 中数据源绑定控件中提供了一下 6 种常用到的参数类型:
u       Control :参数是网页中的控件的属性值。使用控件的编号、名称来确定控件的属性值。主要是针对控件的参数。
u       Cookie :参数是 HttpCookie 对象的值。 Cookie 能为 Web 应用程序保存用户相关信息,不至于使用户信息丢失。当用户下次再访问这个的站点时,应用程序就可以检索以前保存的信息。
u       Form :适用于页面之间传递参数。用 Form 传递参数的好处是:参数隐含传递,别人无法通过查看文件属性来看到参数的值,比较适合于在页面之间传递口令等保密参数。
u       Profile :适用于保存当前用户配置文件中的属性的值。
u       QueryString :同样适用用页面之间传递参数。 这种方法的主要优点是实现起来非常简单,然而它的缺点是传递的值是会显示在浏览器的地址栏上的,这样做很不安全,同时又不能传递对象,但是在传递的值少而安全性要求不高的情况下,这个方法还是一个不错的方案。
u         Session :适用用页面之间传递参数 通过浏览器来。 把控件中的值存在 Session 变量中,然后在另一个页面中使用它,以不同页面间实现值传递的目的。但是,需要注意的是在 Session 变量存储过多的数据会消耗比较多的服务器资源,有时候也会造成 Session 值的丢失。

下面对一下QueryString参数传递和Session参数传递

A.QueryString 参数传递
WEB 程序开发的过程中常常使用使用 QueryString 参数传递方式。 QuerySting 在页面间传递值是一种很老的传参机制。
使用 QueryString 方法的主要优点是实现起来非常简单;然而它的缺点是传递的值会显示在浏览器的地址栏里面,这样对于安全性要求较高的程序来说是很不安全的。但是在传递的值少而安全性要求不高的情况下,使用这个方法还是一个不错的。 QueryString 方法传递值很方便,但是这种方法不能传递对象。
使用这种方法的步骤如下 :
1. 启动 VS2005
2. 创建两个 web 页面。
3. 添加 TextBox 控件和按钮。
4. 在按钮的单击事件里创建一个保存 URL 的字符变量。
5. 在保存的 URL 里添加 QueryString 参数。
6. 使用 Response.Redirect 重定向到上面保存的 URL Default 页面
实例代码如下所示。
源页面代码:
protected void Button1_Click(object sender, EventArgs e)
{
//添加url,里面存放两个参数,学好和姓名,传递给Default页面
string url;
url = "Default.aspx?xueh=" + TextBox1.Text + "&xingm=" + TextBox2.Text;
Response.Redirect(url);
}
目标页面代码:
protected void Page_Load(object sender, EventArgs e)
{
//使用QueryString方法接收从上个页面传递过来的参数信息,学号、姓名
Label1.Text = Label1.Text + Request.QueryString["xueh"];
Label2.Text = Label2.Text + Request.QueryString["xingm"];
}
运行结果
运行 页面程序,运行结果如图 11-34 所示。在学号和姓名输入栏中要传递的学号和姓名。
图11-34 传值页面
单击“传递”按钮,跳转到下一个页面,显示传递的学号和姓名。如图 11-35 所示。
图11-35 接收页面
B. 使用 Session 变量
WEB 程序开发的过程中另一种常用的页面传值方式是使用 Session 传递方式。这种方式与 QueryString 传值方式不同。
通常是把前一个页面的值保存在 Session 变量中,然后在另的页面中使用这些值。但是,需要注意的是在 Session 变量存储过多的数据会消耗比较多的服务器资源,所以对于不用的 Session 值要及时从内存中移除掉。并且长时间不用的 Session 值会丢失。
使用 Session 变量传递值的一般步骤如下:
1. 启动 VS2005
2. 创建两个 web 页面。
3. 添加 TextBox 控件和按钮。
4. 在按钮的单击事件里,把控件的值添加到 session 变量里。
5. 使用 Response.Redirect 方法重定向到另一个页面 Default 页面
6. 在另一个页面提取 session 的值,在确定不需要使用该 session 时,要显式清除它。
实例代码如下所示。
源页面代码:
protected void Button1_Click(object sender, EventArgs e)
{
//创建两个Session变量传值,学好和姓名,传递给Default页面
Session["xueh"] = TextBox1.Text;
Session["xingm"] = TextBox2.Text;
Server.Transfer("Default.aspx");
}
目标页面代码:
protected void Page_Load(object sender, EventArgs e)
{
//Default页面接收传递过来的参数信息,学号、姓名
Label1.Text = Label1.Text + Session["xueh"].ToString();
Label2.Text = Label2.Text + Session["xingm"].ToString();
//Session值从内存中移除,避免占用内存
Session.Remove("xueh");
Session.Remove("xingm");
}
运行结果
运行 页面程序,运行结果如图 11-36 所示。在学号和姓名输入栏中要传递的学号和姓名。
图11-36 传值页面
单击“传递”按钮,跳转到下一个页面,显示传递的学号和姓名。如图 11-37 所示。