2015-11-19 49 views
1

我有一个条件内的覆盖div。如果Cookies["User"]为空,那么我将显示一个覆盖div,其中有两个单选按钮和一个提交按钮。MVC:饼干不持久

当用户选择radio选项,并点击提交按钮,当通过ajax调用, 我打电话给设置cookie的操作。

我已经把覆盖div内_Layout页面,所以每个调用它检查会话。

我的问题是:第一次设置cookie后,它不是第二次持续。 下面是我的方法,该方法使用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); 
    } 

下面是我的叠加DIV条件:

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

回答

2

使用此语法来帮助获取Cookie:

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

,并检查是否cookie存在在C#中使用它:

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

并创建并保存cookie:

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