ASP.NET MVC 5, Хранение значений списка в сеансе - PullRequest
0 голосов
/ 12 мая 2018

Я пытаюсь сохранить список продуктов в Списке <>, который я сохранил в сеансе, но когда я добавляю второй продукт, он отображается только первым на моей странице просмотра...............

List<ShoppingCartItem> ShoppingCartItems = new List<ShoppingCartItem>
        {
            new ShoppingCartItem() {Product = product.Name, Attributes = atts, Options = opts, Price = producttotalprice, Quantity = 1}
        };

        if (Session["Cart"] == null)
        {
            Session["Cart"] = ShoppingCartItems;
        }

        return View(Session["Cart"]);

    }

Кто-нибудь может мне помочь, пожалуйста, чтобы восстановить все товары, которые я сохранил.

Ответы [ 2 ]

0 голосов
/ 12 мая 2018

Если это код «добавить», вы фактически не вносите поправки в список.Вы объявляете совершенно новый список ShoppingCartItems, который содержит новый продукт.

Он работает для первого продукта, потому что возвращает true:

if (Session["Cart"] == null)

Второй раз это ложно, иНичего не произошло.То, что вы хотите сделать, это:

1) Извлечь корзину сеанса, которая представляет собой «Список» (если он нулевой, то инициализировать новый.

2) Создать новый ShoppingCartItem изпродукт, который был передан в контроллер.Добавьте этот продукт в корзину.

0 голосов
/ 12 мая 2018

Вы создаете new List<ShoppingCartItem> каждый раз, когда , и добавляете только один элемент в этот список. Это звучит как , вы хотите сначала проверить, есть ли уже список в сеансе. И, если это так, добавьте новый элемент в список этого . Примерно так:

List<ShoppingCartItem> shoppingCartItems;
if (Session["Cart"] != null)
{
    shoppingCartItems = (List<ShoppingCartItem>)Session["Cart"];
}
else
{
    shoppingCartItems = new List<ShoppingCartItem>();
}

shoppingCartItems.Add(new ShoppingCartItem() {Product = product.Name, Attributes = atts, Options = opts, Price = producttotalprice, Quantity = 1});
Session["Cart"] = shoppingCartItems;

return View(shoppingCartItems);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...