Change a cookie value of a cookie that already exists

asp.net-mvc, c#, cookies

Solution

From ASP.NET Cookies Overview:

You cannot directly modify a cookie. Instead, changing a cookie consists of creating a new cookie with new values and then sending the cookie to the browser to overwrite the old version on the client.

You can try this:

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);

Problem

I have a cookie called SurveyCookie. Created like so: ``` 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); ``` Which works great. Now the problem comes when I want to change the value "surveyPage" like so. The below will create a new cookie which is not what I want. ``` int cookieValue = Convert.ToInt32(Request.Cookies["SurveyCookie"]["surveyPage"]) + 1; Response.Cookies["SurveyCookie"]["surveyPage"] = cookieValue.ToString(); ``` Then I tried this code below which doesn't work either. The surveyPage is still 1 when it should be 2. ``` Request.Cookies["SurveyCookie"]["surveyPage"] = cookieValue.ToString(); ``` Since neither of the above works what does change the cookies value for surveyPage?

Original source