2013-04-29 3 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

В коде, когда запрашивающая вам использовать

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

в то время как при написании использовании

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

поэтому вы должны заменить на _ в параметре.

Есть ли причина не использовать Сессию для этого?

+0

Спасибо Олаф, это действительно помогает, хотя мое приложение по-прежнему держит один элемент. Я заметил, однако, что, если я продолжаю добавлять один и тот же элемент, количество увеличивается! Его единственный, когда я добавляю другой элемент, перезагружается, может быть, потому, что файлы cookie переписываются каждый раз и не могут быть обновлены? PS: Я знаю, как это сделать в сеансе, я просто хотел практиковать свои навыки работы с печеньем, прежде чем идти и написать свою сертификацию ASP.NET. : D – RealityDysfunction

+0

Нет, их нельзя переписывать. Я не понимаю, почему это происходит. Попробуйте следующее: используйте Cookies [ProductID + "_" + ProductCategory] вместо Cookies ["CartData"] [ProductID + "_" + ProductCategory]. Затем вы получаете многомерный массив, и легче проверить, есть ли другая ошибка. – Olaf

Смежные вопросы