2015-11-19 50 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);