Asp.net中的状态保持方案:
ViewState:是donet特有的 微软提供的对象来完成状态保持
ViewState["key1"] = 11; 赋值 键值对 形式 object类型
ViewState["key1"] 直接取值,将其转化成相应的类型
原理:本质上是一种隐藏域。微软默认提供的
想用ViewState必须用服务端控件编程 <form id= "form1" runat="server">
cookie 存储在浏览器内存中,浏览器关闭就没有了。可以存在磁盘上,永久存储。
可以设置一个path来限制某个路径下面的页面才会把cookie发送到后台。
Response.Cookies["cp"].Value = "abc"; 写一个cookie ,给cookie赋值
如果这样创建cookie,是将cookie的数据存储在浏览器的内存中,浏览器关闭,cookie丢失
string ss = Request.Cookies["cp"].Value; 接收浏览器端的cookie值
Response.Cookies["cp"].Value = "abc";
Response.Cookies["cp"].Expires = DateTime.Now.AddDays(3); 添加过期时间,当前时间再加3天
设置了过期时间的cookie存储在磁盘上
Response.Cookies["cp"].Expires = DateTime.Now.AddDays(-1); 设置cookie过期 删除cookie
Response.Cookies["cp"].Path = "/" 指定cookie路径,访问该路径才有cookie值 /代表所有的路径
Response.Cookies["cp"].Path = "/app" 只有访问该路径下所有文件夹 才带cookie
Response.Cookies["cp"].Domain = "www.baidu.com" 设置域范围
除了上面的方法 Donet 还提供了下面的一个类来添加cookie
HttpCookie acookie = new HttpCookie("name");
acookie.Value = "abc";
acookie.Expires = DateTime.Now.AddDays(1);
Response.Cookies.Add(acookie);
多值cookie
Response.Cookies["user"]["username"] = "abc";
Response.Cookies["user"]["lastvisi"] = "2017-11-29";
Request.Cookies.Count 获取cookie的个数
session相关:session存object类型数据
服务端状态保存机制,每个session有一个sessionId SessionId以cookies的形式放在请求报文中,发送给服务端
Set-Cookie:中存的就是sessionId
每个用户都有自己的session对象
Session["name"] = "123" Session 默认过期时间20分钟,滑动过期时间
浏览器关了,sessionId 没有了,也就没有了session值
取Session的值前,需要先判断不为空
Response.Write((Session["name"]).ToString());
能用客户端保存就不用服务端
在一般处理程序中使用session必须实现IRequiresSessionState接口 这是一个标记接口
在aspx中不需要
System.Web.SessionState.IRequiresSessionState 在类中继承这个接口
Session["user"] = "abcf"; //进程内session