2013-04-29 66 views
1

我的cookie似乎確實創建了它自己,它確實存儲了值,但只存儲了最後一個值,因此基本上它總是保存1個項目,而當我嘗試添加另一個項目時,它只是替換1個項目。 我的代碼如下,任何想法表示讚賞。多值餅乾,不是多值?

if (Request.Cookies["CartData"] == null) 
    { 
     HttpCookie NewCookie = new HttpCookie("CartData"); 
     Response.Cookies.Add(NewCookie); 
    } 
    /* Process Queries */ 
     int Qty; 
     if (Request.QueryString["Action"] == "AddToCart") 
     { 
      string ProductID = Request.QueryString["ProductID"]; 
      string ProductCategory = Request.QueryString["Category"]; 

      /* Check if Quantity entered is a valid number, if not set to 1 */ 
      if (!int.TryParse(Request.QueryString["Qty"], out Qty)) 
      { 
       Qty = 1; 
      } 

      /* Check if the item already exists in Cart */ 
      if (Request.Cookies["CartData"][ProductID + "_" + ProductCategory] != null) 
      { 
       int tempQty; 
       tempQty = int.Parse(Request.Cookies["CartData"][ProductID + "," + ProductCategory]); 
       tempQty += Qty; 
       Response.Cookies["CartData"][ProductID + "_" + ProductCategory] = tempQty.ToString(); 
      } 
      else 
      { 
       Response.Cookies["CartData"][ProductID + "_" + ProductCategory] = Qty.ToString(); 
      } 
      Response.Cookies["CartData"].Expires = DateTime.Now.AddDays(1); 

     } 

回答

2

在你的代碼請求你,當你寫的參數使用

Response.Cookies["CartData"][ProductID + "_" + ProductCategory] 

所以你應該更換,由_當同時使用

Request.Cookies["CartData"][ProductID + "," + ProductCategory]) 

是否有任何理由不使用Session來做到這一點?

+0

非常感謝Olaf,雖然我的應用程序似乎仍然持有一個項目,但確實有幫助。但是我注意到如果我繼續添加相同的物品,數量會增加!它只有當我添加另一個項目它重置,是否可以是因爲每次都重寫cookie並且不能更新? PS:我知道如何在會話中做到這一點,我只是想在我去寫ASP.NET認證之前練習我的cookie技巧。 :D – RealityDysfunction 2013-04-29 17:35:16

+0

不,他們不應該被改寫。我看不出爲什麼發生。請嘗試以下操作:使用Cookie [ProductID +「_」+ ProductCategory]而不是Cookie [「CartData」] [ProductID +「_」+ ProductCategory]。然後你得到多維數組,並且更容易檢查是否有其他錯誤。 – Olaf 2013-04-30 12:08:08