2012-06-21 125 views
2
protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      this.GetLeft.Value = invited.GetInviteCountByWeb().ToString(); 
      HttpCookie oldCookie = Request.Cookies["Time"]; 
      if (oldCookie != null) 
      { 
       if (DateTime.Now.ToString("yyyy-MM-dd") == Convert.ToDateTime(oldCookie.Values["GetTime"]).ToString("yyyy-MM-dd")) 
       { 
        this.IsGet.Value = "false"; 
       } 
       else 
       { 
        HttpCookie newCookie = new HttpCookie("Time"); 
        newCookie.Values.Add("GetTime", DateTime.Now.Date.ToString("yyyy-MM-dd")); 
        newCookie.Expires = DateTime.Now.AddHours(24.0); 
        Response.Cookies.Add(newCookie); 
       } 
      } 
     } 
    } 

,但它不工作時,oldcookie爲空時,關閉瀏覽器每次.. 所以我怎樣才能設置按鈕點擊,每天一次?C#按鈕,點擊每日一次

+0

你想做什麼?一般來說,您不能依靠瀏覽器來保持持久性cookie,因爲您可以告訴瀏覽器在瀏覽器關閉時刪除它們。 – Paolo

+0

爲什麼使用可空屬性'this.IsGet'?什麼類封裝了這個方法? –

+0

我加了ASP.NET標籤來澄清。無論如何,這是一個不好的方法,你必須將信息服務器端(DB想到的)存儲在cookie中。如果用戶在每次關閉瀏覽器時自動清除cookie,該怎麼辦? – Alex

回答

3

你的其他陳述是在錯誤的地方,試着這樣;

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     this.GetLeft.Value = invited.GetInviteCountByWeb().ToString(); 
     HttpCookie oldCookie = Request.Cookies["Time"]; 
     if (oldCookie != null) 
     { 
      if (DateTime.Now.ToString("yyyy-MM-dd") == Convert.ToDateTime(oldCookie.Values["GetTime"]).ToString("yyyy-MM-dd")) 
      { 
       this.IsGet.Value = "false"; 
      } 
     } 
     else 
     { 
      HttpCookie newCookie = new HttpCookie("Time"); 
      newCookie.Values.Add("GetTime", DateTime.Now.Date.ToString("yyyy-MM-dd")); 
      newCookie.Expires = DateTime.Now.AddHours(24.0); 
      Response.Cookies.Add(newCookie); 
     } 
    } 
+0

不工作,刷新瀏覽器顯示var,但重新啓動瀏覽器,oldcookie爲空... –

+0

你能告訴我另一種方法,限制用戶可以每天點擊一次按鈕嗎? –