Задать вопрос
@Karkes

Как работать с Session в AspNet Core mvc?

Делал корзину для сайта по одному примеру. Создание сессии выглядит так.
public Cart GetCart()
        {
            Cart cart = (Cart)Session["Cart"];
            if (cart == null)
            {
                cart = new Cart();
                Session["Cart"] = cart;
            }
            return cart;
        }

У меня естественно не сработало и я заменил Session на HttpContext.Session и все равное не работает.
Как можно это исправить?
  • Вопрос задан
  • 344 просмотра
Подписаться 2 Простой Комментировать
Решения вопроса 1
SunnyPh
@SunnyPh
ASP.NET Core (MVC, Razor Pages, Blazor)
1. Как уже было сказано в ответе выше, для работы с сессиями, нужно явно подключать специальные сервисы для этого в ASP.NET Core. Возможно вы уже это сделали, но я все же повторю этот код.
Для .NET 6 и выше, это нужно сделать в файле Program.cs.
builder. Services.AddHttpContextAccessor( );
builder.Services.AddSession()  //Здесь нужно добавить настройки для сессий.

Далее в конвейере добавляем компонент
app.UseSession();
Однако в объекте Session, могут храниться только целые числа или строки, и для сохранении данных о товарах включенных в корзину покупок нужно будет создать расширение для методов Get и Set для Session, в которых нужно будет настроить сериализацию или десереиализацию сложных объектов хранящихся в сессии, в нашем случае это строка с данными о Товаре из Корзины покупок. Так вот данные нужно передавать в виде строк или получать строки и преобразовывать в данные о Товаре. Именно такая настройка хранения данных о Товарах в Сессиях используется в курсе об интернет-магазине на ASP.NET Core MVC, вот видео из этого курса.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@oleg_ods
1) Подключить сессию.
2) В сессию можно писать только строки.

В примере который вы смотрели, возможно, был написан экстеншн к сессии, который позволяет ей работать с объектами Cart подобным образом.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы