Удалить конкретное значение из сессии - PullRequest
0 голосов
/ 09 октября 2018

Я хочу удалить определенный элемент из «Сеанса».Мой код:

public ActionResult DeleteProductFromCart(AddToCart id)
{
MyDBContext myDBContext = new MyDBContext();
List<AddToCart> cart = (List<AddToCart>)Session["cart"];
cart.RemoveAt(Convert.ToInt16(cart.Contains(id)));      
return RedirectToAction("ViewCart");
}

Но это не работает должным образом.

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

Если у вас есть свойство id в AddToCart Класс

  1. Сначала вы должны извлечь тележки из сеанса

    List<AddToCart> cart = (List<AddToCart>)Session["cart"];
    
  2. Послечто вы должны получить корзину, связанную с идентификатором

    AddToCart itemToDelete=cart.FirstorDefault(x=>x.id==id.id);
    
  3. Наконец, вы можете удалить вот так ...

    cart.Remove(itemToDelete);
    
0 голосов
/ 09 октября 2018

cart.Contains(id) вернет логическое значение, а не индекс элемента, который вы хотите удалить.

Вам потребуется внести некоторые корректировки, аналогичные приведенному ниже коду (при условии, что ваш класс AddToCart имеетполе Id):

1 - переименуйте переданный параметр для лучшей читаемости.

public ActionResult DeleteProductFromCart(AddToCart item)

2 - получите элемент (если он существует в вашей коллекции):

var itemToBeRemoved = cart.SingleOrDefault(i=>i.Id == item.Id);

// if the item exists, remove it from the cart collection
if(itemToBeRemoved!=null)
{
   cart.remove(itemToBeRemoved);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...