2009-07-23 13 views
26

Tengo un sitio web muy grande que usa muchas cookies. Hay aprox. 14 cookies diferentes están ahí. Tengo diferentes cookies para cada artículo. Cuando un usuario navega por el sitio, tendrá 14 cookies en su navegador. No quiero esto.Almacenamiento de valores múltiples en cookies

Quiero una cookie única para mi sitio que tendrá 14 elementos y puedo agregarla, editarla y eliminarla. Intenté de muchas maneras pero no puedo hacer esto.

Necesito poner algunas cookies de tiempo de ejecución y guardar el nombre de usuario en la cookie. Después de que el usuario inicie sesión, quiero guardar su dirección de sitio personal en él. Eventualmente quiero tanto el nombre de usuario como la dirección personal del sitio. Quiero guardar el nombre de usuario antes y luego cuando el usuario vaya a su sitio personal, entonces almacenaré el tiempo de ejecución del nombre del sitio personal.

¿Alguien tiene una idea de cómo podría hacer esto?

Respuesta

43

Mateo se me adelantó, pero eso sí, ver la ASP.NET Cookies Overview ...

para escribir y leer una sola galleta con múltiples claves/valores, se vería algo como esto:

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

todavía está almacenando al mismo tiempo.nombre y dirección como lo hice después de HttpCookie cookie = new HttpCookie ("mybigcookie"); cookie.Values.Add ("nombre", nombre); y luego cuando el usuario usa su sitio personal, entonces quiero hacer cookie.Values.Add ("dirección", dirección); ¿Es posible? –

+1

@Jalpesh: respuesta corta es no, revisa mi edición. –

+0

¿Cuál es la sintaxis equivalente de JavaScript? – JNappi

15

Hay una sección en el ASP.NET Cookies Overview que explica cómo implementar varios pares de nombre-valor (llamados subclaves) en una sola cookie. Creo que esto es lo que quieres decir.

El ejemplo de esa página, en 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); 

EDIT: A partir de las galletas general (énfasis añadido):

modificar y borrar las cookies: Usted no puede modificar directamente una cookie. En cambio, cambiar una cookie consiste en creando una nueva cookie con los nuevos valores y luego enviando la cookie al explorador para sobrescribir la versión anterior en el cliente.

+0

En que están almacenando cookie al mismo tiempo como nombre de usuario y sitio personal y luego agregarlo a la cookie mientras que en mi caso es algo así como que ya almacené el nombre de usuario en la cookie y luego agregué uno otros valores en la cookie como sitio personal . ¿Hay alguna manera de hacer esto? –

2

Modificación y eliminación de cookies: no puede modificar directamente una cookie. En cambio, cambiar una cookie consiste en crear una nueva cookie con nuevos valores y luego enviar la cookie al navegador para sobrescribir la versión anterior en el cliente.

Cuestiones relacionadas