2015-11-19 3 views
1

У меня есть оверлейный div внутри условия. Если Cookies["User"] имеет значение null, я показываю оверлейный div с двумя переключателями и кнопкой отправки.MVC: файлы cookie не сохраняются

Когда пользователь выбирает опцию radio и нажимает кнопку отправки, когда по вызову ajax, Я вызываю действие, которое устанавливает куки.

Я положил накладной div внутри Страница _Layout, поэтому для каждого вызова он проверяет сеанс.

Моя проблема: первый раз после настройки файлов cookie он не сохраняется во второй раз. Ниже мой метод, который устанавливает куки:

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

Ниже мое условие для наложения DIV:

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

ответ

2

Используйте этот синтаксис, чтобы получить печенье:

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

И проверить, если печенье существует используйте это в C#:

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

И для создания и сохранения файлов cookie:

HttpCookie cookie = new HttpCookie("User"); 
cookie.Values["UserType"] = usertype; 
cookie.Expires = DateTime.MaxValue; 
HttpContext.Response.SetCookie(cookie); 
Смежные вопросы