在cookie中存储多个值

时间:2009-07-23 18:45:25

标签: asp.net cookies

我有一个非常大的网站,它使用了很多cookie。有约。有14种不同的饼干。我对每个项目都有不同的cookie。当用户浏览网站时,他们的浏览器中将有14个cookie。我不想要这个。

我想为我的网站添加一个包含14个项目的cookie,我可以添加,编辑和删除它们。我尝试了很多方法,但我无法做到这一点。

我需要输入一些运行时cookie以及将用户名保存在cookie中。用户登录后,我想在其中保存自己的个人网站地址。最终,我同时想要用户名和个人网站地址。我想先保存用户名,然后当用户访问他的个人网站时,我会存储个人网站名称运行时间。

有人知道我该怎么做吗?

3 个答案:

答案 0 :(得分:49)

马修打败了我,但是,请看ASP.NET Cookies Overview ......

要编写和读取具有多个键/值的单个cookie,它看起来像这样:

HttpCookie cookie = new HttpCookie("mybigcookie");
cookie.Values.Add("name", name);
cookie.Values.Add("address", address);

//get the values out
string name = Request.Cookies["mybigcookie"]["name"];
string address = Request.Cookies["mybigcookie"]["address"];

答案 1 :(得分:15)

ASP.NET Cookies Overview中有一节讨论如何在一个cookie中实现多个名称 - 值对(称为子键)。我想这就是你的意思。

该页面的示例,在C#中:

Response.Cookies["userInfo"]["userName"] = "patrick"; //userInfo is the cookie, userName is the subkey
Response.Cookies["userInfo"]["lastVisit"] = DateTime.Now.ToString(); //now lastVisit is the subkey
Response.Cookies["userInfo"].Expires = DateTime.Now.AddDays(1);

HttpCookie aCookie = new HttpCookie("userInfo");
aCookie.Values["userName"] = "patrick";
aCookie.Values["lastVisit"] = DateTime.Now.ToString();
aCookie.Expires = DateTime.Now.AddDays(1);
Response.Cookies.Add(aCookie);

编辑:从Cookies概述(重点添加):

  

修改和删除Cookie:   您   不能直接修改cookie 。   相反,更改cookie包含   使用新值创建新cookie   然后将cookie发送给   浏览器覆盖旧版本   在客户端上。

答案 2 :(得分:2)

修改和删除Cookie:您无法直接修改Cookie。相反,更改cookie包括使用新值创建新cookie,然后将cookie发送到浏览器以覆盖客户端上的旧版本。