2014-12-11 2 views
0

우리는 세션을 사용하여 바구니에 제품을 모으고 있습니다. 이것은 단지 프로젝트 일 뿐이며, 이것이 확장 성이 없거나 전혀 똑똑하지 않다는 것을 알고 있습니다. 단지 쇼를위한 것입니다. 어쨌든 우리 페이지에서 제품을 추가 할 때마다 바스켓을 통해 측면 바구니에 추가됩니다. 여기에는 이름, 가격 및 수량이 있습니다. 꼭 필요한만큼 추가하지만, 동일한 제품을 다시 추가 할 때 기존 제품에 대한 증가가 아니라 목록에 추가됩니다.MVC 5에서 세션 증가

기존 코드에 기능을 추가하는 "쉬운"방법이 있습니까? 아니면 그 이유가 무엇입니까? 당신의 양이고 BasketItem.DishId 그냥 그런 다음 열쇠

[ChildActionOnly] 
     public ActionResult BasketItemsList() 
     { 


      Basket basket; 

      if (Session["Basket"] == null) 
      { 
       basket = new Basket(); 
       Session["Basket"] = new Basket(); 
      } 
      else 
      { 
       basket = (Basket)Session["Basket"]; 

      } 
      return PartialView("_Basket", basket.Items); 
     } 
+0

은 바구니 품목입니다. 수량에 맞는 수량 수? – hometoast

답변

1

BasketItem.Number 가정 : 이것은 우리의 부분보기로 표시하기위한 것입니다

[HttpPost] 
     public ActionResult Index(Dish dish) 
     { 
      Basket basket; 
      if (Session["Basket"] == null) 
      { 
       basket = new Basket(); 
       Session["Basket"] = new Basket(); 
      } 
      else 
      { 
       basket = (Basket)Session["Basket"]; 
      } 
      BasketItem basketItem = new BasketItem(); 
      basketItem.DishId = dish.DishId; 
      basketItem.Title = dish.Title; 
      basketItem.Number = dish.Number; 
      basketItem.Price = dish.Price; 

      basket.AddItem(basketItem); 

      return RedirectToAction("Index", basket.Items); 

    } 

:

이 그것을 추가하기위한 우리의 컨트롤러 액션이다 현재 목록 DishId에 의해 그것을 증가하거나 새로운 하나를 추가합니다.

[HttpPost] 
public ActionResult Index(Dish dish) 
{ 
    Basket basket; 
    if (Session["Basket"] == null) 
    { 
     basket = new Basket(); 
     Session["Basket"] = new Basket(); 
    } 
    else 
    { 
     basket = (Basket)Session["Basket"]; 
    } 


    BasketItem basketItem = new BasketItem(); 
    basketItem.DishId = dish.DishId; 
    basketItem.Title = dish.Title; 
    basketItem.Number = dish.Number; 
    basketItem.Price = dish.Price; 

    var possibleDuplicate = baskey.Items.Where(x => x.DishId == basketItem.DishId).FirstOrDefault(); 
    if (possibleDuplicate != null) 
    { 
     possibleDuplicate.Number += 1; 
    } 
    else 
    { 
     basket.AddItem(basketItem); 
    } 
    return RedirectToAction("Index", basket.Items); 
} 
+0

놀라운! 그게 효과가 있지만 예외는 하나 있습니다. 번호에서 선택한 번호로 숫자가 증가되기를 원합니다. 나는 제품의 첫 번째 주문을한다. 그럼 당신은 좀 더, 주문 2를 원합니다. 내가 원하는 것은 1에서 3으로 증가하는 것입니다. 그러나 현재 상태에서는 항상 1 씩 증가합니다. possibleDuplicate.Number + = dish.Number ? – Jacob

+0

네, 효과가있었습니다. 빠른 답변과 도움에 감사드립니다. – Jacob

관련 문제