2014-02-27 3 views
7

Ich habe einen Cookie namens SurveyCookie. So erstellt:Ändern Sie einen Cookie-Wert eines bereits vorhandenen Cookies

var cookie = new HttpCookie("SurveyCookie"); 
cookie.Values["surveyPage"] = "1"; 
cookie.Values["surveyId"] = "1"; 
cookie.Values["surveyTitle"] = "Definietly not an NSA Survey...."; 
cookie.Values["lastVisit"] = DateTime.UtcNow.ToString(); 
cookie.Expires = DateTime.UtcNow.AddDays(30); 
Response.Cookies.Add(cookie); 

Was funktioniert gut. Jetzt kommt das Problem, wenn ich den Wert "surveyPage" so ändern möchte.

Die unten wird ein neues Cookie erstellen, das ist nicht was ich will.

int cookieValue = Convert.ToInt32(Request.Cookies["SurveyCookie"]["surveyPage"]) + 1; 
Response.Cookies["SurveyCookie"]["surveyPage"] = cookieValue.ToString(); 

Dann habe ich diesen Code unten versucht, der auch nicht funktioniert. Die surveyPage ist noch 1, wenn es 2.

Request.Cookies["SurveyCookie"]["surveyPage"] = cookieValue.ToString(); 

werden sollte, da keine der oben genannten Werke, was die für surveyPage Cookies Wert ändert?

Antwort

24

Von ASP.NET Cookies Overview gesetzt aktualisieren:

Sie können nicht direkt ein Cookie ändern. Stattdessen besteht die Änderung eines Cookies darin, ein neues Cookie mit neuen Werten zu erstellen und dann das Cookie an den Browser zu senden, um die alte Version auf dem Client zu überschreiben.

Sie können dies versuchen:

HttpCookie cookie = Request.Cookies["SurveyCookie"]; 
if (cookie == null) 
{ 
    // no cookie found, create it 
    cookie = new HttpCookie("SurveyCookie"); 
    cookie.Values["surveyPage"] = "1"; 
    cookie.Values["surveyId"] = "1"; 
    cookie.Values["surveyTitle"] = "Definietly not an NSA Survey...."; 
    cookie.Values["lastVisit"] = DateTime.UtcNow.ToString(); 
} 
else 
{ 
    // update the cookie values 
    int newSurveyPage = int.Parse(cookie.Values["surveyPage"]) + 1; 
    cookie.Values["surveyPage"] = newSurveyPage.ToString(); 
} 

// update the expiration timestamp 
cookie.Expires = DateTime.UtcNow.AddDays(30); 

// overwrite the cookie 
Response.Cookies.Add(cookie); 
-1

Schauen Sie sich die Response.SetCookie() Methode, da dies Ihre vorhandenen Cookie

+5

_HttpResponse.SetCookie() _ unterstützt die Infrastruktur Produkt und ist nicht zur direkten Verwendung im Code bestimmt. Die richtige Methode zum Aktualisieren eines Cookies gemäß der _HttpResponse.SetCookie() _ -Dokumentation von Microsoft ist _Response.Cookies.Add (MyCookie); _. Sehen Sie sich das Beispiel unten in https://msdn.microsoft.com/en-us/library/system.web.httpresponse.setcookie(v=vs.110).aspx an –

Verwandte Themen