Ashish
Ashish

Reputation: 31

MVC: cookies are not persisting

I have an overlay div inside a condition. If Cookies["User"] is null then I show an overlay div having two radio buttons and a submit button.

When user selects radio option and clicks submit button, when by ajax call, I am calling an action which sets cookies.

I have put the overlay div inside _Layout page, so for every call it checks for session.

My issue is: First time after setting cookies, it's not persisted for second time. Below is my method which sets cookies:

 public ActionResult SaveUserTypeCookies(string usertype, string returnUrl)
     {
        if (Request.Cookies["User"] != null)
        {
            HttpCookie cookie = Request.Cookies["User"];
            cookie.Values["UserType"] = usertype;
            cookie.Expires = DateTime.MaxValue;
            Response.SetCookie(cookie);
        }
        else
        {
            HttpCookie cookie = new HttpCookie("User");
            cookie.Values["UserType"] = usertype;
            cookie.Expires = DateTime.MaxValue;
            Response.Cookies.Add(cookie);
        }
        return Redirect(returnUrl);
     }

Below is my condition for overlay div:

 @if ((Request.Cookies["User"]== null))
 {
     <div id="overlay_div" class="overlay"></div>
 }

Upvotes: 1

Views: 875

Answers (1)

user2771704
user2771704

Reputation: 6202

Use this syntax to get cookie:

HttpCookie cookie = HttpContext.Request.Cookies.Get("User");

And check if cookie exists use this in C#:

HttpContext.Request.Cookies["User"] != null

And to create and save cookie:

HttpCookie cookie = new HttpCookie("User");
cookie.Values["UserType"] = usertype;
cookie.Expires = DateTime.MaxValue;
HttpContext.Response.SetCookie(cookie);

Upvotes: 2

Related Questions