页面信息传递
页面信息传递
Cookies QueryString Application Session
1、利用cookies保持客户端信息
.NET System Web 控件名称以下三个类,可以使用它们来处理客户端的Cookies
1、HttpCookie:提供一个建立和操作独立HTTPcookies的安全类型的方式
2、HttpResponse:Cookies属性允许客户端cookies被操作
3、HttpRequest:Cookies属性允许访问客户端操作的cookies
HttpResponse和HttpRequest对象的Cookies属性将返回一个HttpCookieCollection对象,它可以将单独的cookies添加到集合(collection)中,
以及从集合(collection)获得一个单独cookies。
HttpCookie类针对于客户存储而建立的单独的cookies。一旦HttpCookie对象被建立,可以将其添加到HttpResponse对象的Cookies属性中。同样的,
可以通过HttpResponse对象访问现有的cookies。HttpCookies类的共有属性如下:
1)Domain:获得或设置与cookie有关的域名,可用于限制特定区域的cookie访问
2)Expires:获得或设置cookie的终止日期和时间,可以将其设置为一个过去的日期以自动禁止或者删除cookie
3)Names:获得或设置cookie的名称
4)Path:获得或设置cookie的虚拟路径。这一属性允许限制cookie的范围,也就是说,访问cookie只能限制于一个特定的文件夹或路径。
设置这一属性限制为只能访问特定路径和该路径下的所有文件
5)Secure:发信号以表示是否使用SecureSocketsLayer(SSL)来发送cookie值
6)Value:获得或设置一个单独的cookie值
7)Values:返回包含在cookie中的key/value的一个集合
每一个Cookie都是从Cookies中获得的,就是说Cookie是通过索引器的方式获得的。
利用Response、Request对象读写,语法如下:
//保存信息到Cookie中
Response.Cookies["Cookie的名字"].value=变量的值;
//读取Cookie
Object 变量名=Request.Cookies["Cookie的名字"].value;
Cookie属于HttpCookie,所以它的语法也可以写成如下形式:
//键值对的方式保存信息
HttpCookie hCookie = new HttpCookie("Cookie的名字",值);
//保存Cookie到Cookies中
Response.Cookies.Add(hCookie);
例:
//保存信息到Cookie中
protected void btnWrite_Click(object sender, EventArgs e)
{
Response.Cookies["firstcookie"].Value = textbox1.Text.Trim();
Response.Cookies["secondcookie"].Value = textbox2.Text.Trim();
//Response.Cookies["firstcookie"].Expires = DateTime.Now.AddDays(1);
// Response.Cookies["secondcookie"].Value = DateTime.Now.ToString();
}
//获取Cookie中的信息
protected void btnRead_Click(object sender, EventArgs e)
{
textbox1.Text= Request.Cookies["firstcookie"].Value;
textbox2.Text = Request.Cookies["secondcookie"].Value;
}
2、QueryString
当使用表单的get方式提交数据时,表单中的数据被保存在Request对象的Querystring集合中。除了读取表单对象传递的参数外,Querystring集合还可以通过读取HTTP查询字符串中的参数值来传递参数。使用Querystring集合来传递数据的语法格式为:
Request.Querystring(变量名)[(索引值)|.变量的个数]
其中各个参数的含义如下:
1)变量名为在HTTP查询字符串中指定要检索的变量名称
2)索引值用于检索多个变量值中的某一个
3)HTTP查询字符串中的变量值由问号(?)后面的值指定
用QueryString在页面间传递值得具体过程有以下三步:
(1)在源页面的代码中用需要传递的名称和值构造URL地址
(2)在源页面的代码中用Request.Redirect(URL);重定向到上面的URL地址中
(3)在目的页面的代码中用Request.QueryString["name"];取出URL地址中传递的值
例:
protected void btnSendMessage_Click(object sender, EventArgs e)
{
//第一步
string urlAddress;
urlAddress = "ReadCookie.aspx?name1=" +
textbox1.Text.ToString() + "&" +
"name2=" + textbox2.Text.ToString() + "&" +
"name3=" + textbox3.Text.ToString();
//第二步
Response.Redirect(urlAddress);
}
protected void btnRead_Click(object sender, EventArgs e)
{
//第三步
textbox1.Text = Request.QueryString["name1"];
textbox2.Text = Request.QueryString["name2"];
textbox3.Text = Request.QueryString["name3"];
}
使用QueryString在页面间传递值的优缺点:
优点:
使用简单,对于安全性要求不高时传递数字或文本值非常有效
缺点:
1)缺乏安全性,是因为它的值暴露在浏览器的URL地址中
2)不能传递对象
3、Application
Application变量在整个应用程序生命周期中都是有效的,类似于使用全局变量,所以可以在不同页面中对它进行存取。它和Session变量的区别在于,前者是所有的用户公用的全局变量,后者是各个用户独有的全局变量。
Application变量的使用方法如下:
1)在源页面的代码中创建需要传递的名称和值构造Application变量,如:
Application["Name"]="Value(Or Object)";
2)在目的页面的代码使用Application变量取出传递的值,如:
Result=Application["Name"];
例:
protected void btnSendMessage_Click(object sender, EventArgs e)
{
Application["name1"] = textbox1.Text;
Application["name2"] = textbox2.Text;
Application["name3"] = textbox3.Text;
Response.Redirect("ReadCookie.aspx");
}
protected void btnRead_Click(object sender, EventArgs e)
{
textbox1.Text = Application["name1"].ToString();
textbox2.Text = Application["name2"].ToString();
textbox3.Text = Application["name3"].ToString();
}
使用Application进行页面传值的优缺点:
优点:
(1)使用简单,消耗较少的服务器资源
(2)不仅能传递简单的数据类型,还能传递对象
(3)数据量大小是不受限制的
缺点:
(1)作为全局变量容易被误操作
4、Session
Session变量和Application变量非常类似,它们的区别在Application变量中提到了。它的使用方法如下:、
1)在源页面的代码中创建需要传递的名称和值构造Session变量,如:
Session["name"]="Value(Or Object)";
2)在目的页面的代码中使用Session变量取出传递的值,如:
Result=Session["name"];
使用Session进行页面传值的优缺点:
优点:
(1)使用简单,不仅能传递简单的数据类型,还能传递对象
(2)数据量大小是不受限制的
缺点:
(1)在Session变量存储大量的数据会消耗较多的服务器资源