webform内置对象 跨页面传值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了webform内置对象 跨页面传值相关的知识,希望对你有一定的参考价值。
内置对象跨页面传值有六种:Request,Response,Session,Cookie,Application,VIewState。
一、Request和ResponseRequest
request请求对象是从客户端向服务器发出请求,包括用户提交的信息以及客户端的一些信息。客户端可通过html表单或在网页地址后面提供参数的方法提交数据,然后通过request对象的相关方法来获取这些数据。request的各种方法主要用来处理客户端浏览器提交的请求中的各项参数和选项。
response 响应对象在ASP中负责将信息传递给用户.Response对象用于动态响应客户端请求,并将动态生成的响应结果返回到客户端浏览器中,使用Response对象可以直接发送信息给浏览器,重定向浏览器到另一个URL或设置cookie的值等。
//请求对象重定向传值 Response.Redirect("目标网页?a=值1&b=值2")。 //响应对象获得参数 Request["a"]; Request["b"];
QueryString - 地址栏显示传值(get)采用键值对的模式传值,但有个很大的缺点,会把要传输的数据暴露在地址栏里。
二、Cookie
Cookie,有时也用其复数形式Cookies,指某些网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密)。定义于 RFC2109 和 2965 中的都已废弃,最新取代的规范是 RFC6265[1] 。(可以叫做浏览器缓存)
每个浏览器都有自己的Cookie。
//建立Cookie对象并重定向到目标网页 Response.Cookies["键"].Value="值"; Response.Redirect("目标网页") //目标网页接收Cookie对象 Request.Cookies["键"];
//会话Cookie //20分钟自动过期关闭浏览器自动过期 Response.Cookies["键"].Value = 值; //持久Cookie //给Cookie设置一个过期时间 Response.Cookies["键"].Expires = DateTime.Now.AddDays(3); //清除Cookie //将Cookie的过期时间设置为今天以前的时间 Response.Response.Cookies["user"].Expires = DateTime.Now.AddDays(-10);
Cookie存在本地客户端,不占用服务器资源,可以用于保持用户登录状态,可以缓存不是很重要的数据。相对来说不是很安全,而且不能存中文。
三、Session
//定义Session并重定向 Session["键"]="值"; Response.Redirect("目标网页") //接收Session 接收到的是一个object对象 Session["键"];
Session实际上是存在服务器上的缓存,只有会话型,20分钟或关闭浏览器会失效。优点是安全,可以存任意数据类型,缺点是占用服务器资源,取到的值是object类型,需要进行类型转换。
四、Appliction
使用方法和Session一样,
Application["键"]="值";
保存在服务端,是公用的,所有人共用一套,有效期永久,不删除会一直存在,可以用在新闻类的网页上,针对高并发的数据。缺点是数据不够及时。
五、ViewState
在web窗体控件设置为runat = "server",这个控件会被附加一个隐藏的属性_ViewState,_ViewState存放了所有控件在ViewState中的状态值。ViewState是一个名称/值的对象集合。当请求某个页面时,ASP.NET会把所有控件的状态序列化成一个字符串,然后作为窗体的隐藏属性送到客户端,当客户端吧页面回传时,ASP.NET分析回传的窗体属性,并赋给控件对应的值。
ViewState类在重新请求页面时会自动把之前的控件的状态填充进去。
ViewState会自动附加。
六、
web端传值是一件很麻烦的事,因为http的无状态性。
QueryString是地址栏显示传值(get),Cookie和Session都是全局变量(post)。
以上是关于webform内置对象 跨页面传值的主要内容,如果未能解决你的问题,请参考以下文章
C#-WebForm-★内置对象简介★Request-获取请求对象Response相应请求对象Session全局变量(私有)Cookie全局变量(私有)Application全局公共变量Vi(代码片段