2013-12-17 105 views
0

我有一個方法調用docount()無法設置cookie的值

代碼

if (Request.Cookies["searchCounter"] != null) 
{ 
    Response.Write("cookie old cookie "); 
    int scvalue = int.Parse(Request.Cookies["searchCounter"].Value); 
    int sc = scvalue + 1; 
    Request.Cookies["searchCounter"].Value = sc.ToString(); 
    Request.Cookies["searchCounter"].Expires = DateTime.Now.AddDays(2); 

} 
else 
{ 
    Response.Write("new cookie "); 
    Response.Cookies["searchCounter"].Value = "1"; 
    Response.Cookies["searchCounter"].Expires = DateTime.Now.AddDays(2); 
} 


Response.Write("Cookie value: " + Request.Cookies["searchCounter"].Value); 

由於某種原因,它總是擊中else語句。任何想法我做錯了什麼。

+0

還設置Cookie上的'.Domain',正確的域名,併爲我在本地再試 – Aristos

+0

它工作正常。在第一次進入else塊,但隨後進入主要塊 –

+0

順便說一下,在IF塊中,您正在更新請求中的searchCounter cookie,而不是響應。它應該在響應中完成,否則這個scvalue + 1將不會反映在cookie中 –

回答

2

應該是這樣的:

if (Request.Cookies["searchCounter"] != null && Request.Cookies["searchCounter"].Value != "") 
{ 
    // some code... 
    Response.Cookies["searchCounter"].Value = "some data"; 
    Response.Cookies["searchCounter"].Expires = DateTime.Now.AddDays(1); 
} 
else 
{ 
    Response.Cookies["searchCounter"].Value = "some data"; 
    Response.Cookies["searchCounter"].Expires = DateTime.Now.AddDays(1); 
} 

讀自Request和寫入Response

+0

您的回答是正確的,但您爲什麼不使用HttpCookie類? – Jorge

+0

@Jorge - 感謝您的編輯。我使用它,因爲它的工作原理,我不需要cookie對象。另外,兩條線而不是四條。 – Rudy