客户端的很多信息保存在cookies中比保存在session中好,至少节约内存。
viewbag,viewdata的生命周期只对当前的view有效。用户登录信息等敏感数据已经交给identity 2 去处理。
asp.net 中可以借助httpcookie对象更加方便的操作cookie。
参考链接:http://ju.outofmemory.cn/entry/42908
。通过httpcookie可以设置cookie的名字,value,过期时间,另外还有一个values属性。可以添加键值对。
在mvc中,想要在view页访问 cookie,需要借助viewbag。代码如下:
HttpCookie cookie = Request.Cookies.Get(cookieName);
Viewbag.courseName=cookie.Values["courseName"];
如果需要在所有的页面都显示某些cookie信息。则可以在layout.cshtml中,添加一个部分页。然后这这个部分页中用jquery读客户端的cookie。
如果要根据cookie信息进行内容筛选。
以下从上面的链接复制,挺有用的。先保存着
一、HttpCookie使用示例:
1.写cookie
HttpCookie cookie = new HttpCookie ( "person" ) ;
//属性为“会员”
cookie . Value = "会员" ;
//过期时间为1小时
cookie . Expires = DateTime . Now . Add ( new TimeSpan ( 0, 1, 0, 0 ) ) ;
//可以设置cookie的访问目录和域名
//cookie.Path = "";
//cookie.Domain = "";
//以下是定义的键值对。
cookie . Values . Add ( "name", "张三" ) ;
cookie . Values . Add ( "age", "20" ) ;
//添加到响应体中,不能缺少
Response . Cookies . Add (cookie ) ;
//Response.AppendCookie(cookie); //用于追加操作
2.读取cookie
HttpCookie cookie = Request . Cookies . Get ( "person" ) ;
if (cookie != null )
{
//读取全部 会员&name=张三&age=20
Response . Write (cookie . Value + "<br/>" ) ;
Response . Write (cookie . Values [ "name" ] + "<br/>" ) ; //张三
Response . Write (cookie [ "name" ] ) ; //张三
} else
{
Response . Write ( "不存在" ) ;
}
3.删除cookie,因为我们操作的是cookie对象,所以删除可以分为全部删除,即删除person。或只删除cookie对象中的键
a.删除cookie对象中的键
if (cookie != null )
{
cookie . Values . Remove ( "name" ) ;
//Response.AppendCookie(cookie);
Response . Cookies . Add (cookie ) ;
}
b.删除整个cookie,设置cookie日期过期
if (cookie != null )
{
cookie . Expires = DateTime . Now . Add ( new TimeSpan ( 0, - 3, 0, 0 ) ) ;
Response . Cookies . Add (cookie ) ;
}