Это нормально использовать сессии в ASP.NET MVC, особенно в вашем сценарии корзины покупок.
Существуют недостатки использования сессий, но, похоже, они не применимы к вашему делу:
1) Сессии не позволяют пользователю правильно просматривать ваш сайт на нескольких вкладках браузера, изменения, внесенные на одной вкладке, отражаются на всех остальных.
Но с корзиной покупок, это именно то, что вам нужно. Вам не нужно несколько корзин покупок на пользователя, не так ли?
2) Сеансы не сохраняются по умолчанию, и если вы работаете на веб-ферме, вам необходимо сохранить сеансы в базе данных, чтобы они были доступны для каждого узла фермы.
Но вряд ли ты так масштабируешься. И если вы встретите необходимость масштабирования, сессии не будут вашими главными проблемами.
3) Для сеансов требуется дополнительная функциональность из браузера пользователя (обычно куки). Но все современные браузеры поддерживают файлы cookie, поэтому вам нужно беспокоиться только об очень специальных браузерах.
Есть также некоторые преимущества сеансов перед скрытыми входами:
1) Меньшие накладные расходы. Между вами и клиентом передается только небольшой файл cookie сеанса, а не полный набор скрытых входных данных.
2) Упрощенное программирование. Вам не нужно обязательно включать скрытые входные данные в каждую страницу.
3) Безопасность. Клиент может изменять содержимое скрытых входных данных, как ему угодно. Вы не можете легко передать конфиденциальную информацию через скрытые входы, вам нужно зашифровать ее. Значения сеансов хранятся на сервере, поэтому клиент не имеет к ним доступа.