[C#]asp.net如何在不同的页面之间传递信息
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
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变量存储大量的数据会消耗较多的服务器资源
该文章在 2021/3/3 17:34:48 编辑过 |
关键字查询
相关文章
正在查询... |