Reputation: 31
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
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