2009-07-23 50 views
26

我有非常大的网站,它使用了大量的cookie。有约。那里有14个不同的饼干。每个项目我都有不同的饼干。当用户浏览网站时,他们在浏览器中会有14个Cookie。我不想要这个。在Cookie中存储多个值

我要为我的网站,将有14个项目,我可以添加,编辑和删除一个Cookie。我尝试了很多方法,但我无法做到这一点。

我需要把一些运行时间饼干以及饼干中保存的用户名。用户登录后,我想将其个人网站地址保存在其中。最终我想都用户名和个人网站地址。我想在保存用户名之前,然后当用户去他的个人网站,然后我将存储个人网站名称运行时间。

没有任何一个有一个想法,我怎么能做到这一点?

回答

43

马修打我,但肯定的,看到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"]; 
+0

你仍然在同一时间存储。名称和地址就像我以下HttpCookie cookie = new HttpCookie(“mybigcookie”); cookie.Values.Add(“name”,name);然后当用户使用其个人网站,然后我想做的cookie.Values.Add(“地址”,地址);可能吗? – 2009-07-23 19:08:51

15

有在讨论如何实现在一个cookie的多个名称 - 值对(称为子项)的ASP.NET Cookies Overview的部分。我认为这是你的意思。

从该页面的例子,在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); 

编辑:从饼干概述(强调):

修改和删除饼干: 您 不能直接修改曲奇。 取而代之,更改Cookie由 创建一个具有新值的新饼干 ,然后将cookie发送到 浏览器以覆盖客户端上的旧版本 。

+0

在使它们在同时喜欢的用户名和个人网站,然后存储Cookie添加它来使用网站,而在我的情况下,它的一些东西一样,我已经存储的用户名中的cookie,然后我像个人网站的cookie增加彼此价值观。有没有办法做到这一点? – 2009-07-23 18:53:32

2

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