2009-07-23 2 views
26

Ho un sito molto grande che utilizza molti cookie. Ci sono ca. Ci sono 14 biscotti diversi. Ho diversi cookie per ogni articolo. Quando un utente naviga nel sito, avrà 14 cookie nel proprio browser. Non voglio questo.Memorizzazione di più valori nei cookie

Voglio un singolo cookie per il mio sito che avrà 14 elementi e posso aggiungere, modificare ed eliminarli. Ho provato molti modi, ma non sono in grado di farlo.

Ho bisogno di mettere alcuni cookie di runtime e salvare il nome utente nel cookie. Dopo che l'utente ha effettuato l'accesso, desidero salvare il proprio indirizzo del sito personale. Alla fine voglio entrambi il nome utente e l'indirizzo del sito personale entrambi. Voglio salvare il nome utente prima e poi quando l'utente visita il suo sito personale, memorizzerò il tempo di esecuzione del nome del sito personale.

Qualcuno ha un'idea di come potrei farlo?

risposta

43

Matthew mi ha battuto ad esso, ma sì, vedere la ASP.NET Cookies Overview ...

scrivere e leggere un singolo cookie con tasto più/valori, sarebbe simile a questa:

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

ancora si sta memorizzando allo stesso tempo. Nome e indirizzo come ho fatto seguendo HttpCookie cookie = new HttpCookie ("mybigcookie"); cookie.Values.Add ("nome", nome); e poi quando l'utente usa il suo sito personale, allora voglio fare cookie.Values.Add ("indirizzo", indirizzo); È possibile? –

+1

@Jalpesh: la risposta breve è no, controlla la mia modifica. –

+0

Qual è la sintassi equivalente javascript? – JNappi

15

C'è una sezione nel ASP.NET Cookies Overview che illustra come implementare più coppie nome-valore (chiamate sottochiavi) in un singolo cookie. Penso che questo sia ciò che intendi.

L'esempio da quella pagina, in 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: Dal Cookies Panoramica (enfasi aggiunta):

modifica e cancellazione dei cookie: È non può modificare direttamente un cookie. Invece, la modifica di un cookie consiste in creando un nuovo cookie con i nuovi valori e quindi inviando il cookie al browser per sovrascrivere la versione precedente sul client.

+0

In quanto stanno memorizzando cookie allo stesso tempo come nome utente e sito personale e quindi aggiungerlo ai cookie mentre nel mio caso è qualcosa come ho già memorizzato il nome utente in cookie e quindi aggiungo un altro valori in cookie come sito personale . C'è qualche modo per farlo? –

2

Modifica ed eliminazione dei cookie: non è possibile modificare direttamente un cookie. Invece, la modifica di un cookie consiste nella creazione di un nuovo cookie con nuovi valori e l'invio del cookie al browser per sovrascrivere la versione precedente sul client.