У нас есть сложная структура корзины покупок. Сложность заключается в структуре ценообразования. Для расчета всех ценообразований требуется значительное количество отдельных объектов базы данных. Из-за сложности мы сохраняем только небольшой объем данных для корзины покупок каждого клиента, и когда нам нужна тележка, мы читаем все данные этих телеграмм, а также множество деталей ценообразования из базы данных - (РЕДАКТИРОВАТЬ) И ПРОВЕРЬТЕ РЕЗУЛЬТАТЫ В ОБЪЕКТ ОБЪЕКТА ПОКУПКИ, ПОЛНЫЙ С ИТОГАМИ. Это, к сожалению, относительно дорогое время.MVC - Как я могу поделиться моделью в макете и виде
Наш макет главного сайта (РЕДАКТИРОВАТЬ) ПОЛУЧАЕТ ОБЪЕКТ ПОКУПКИ КАРТОЧКИ и предоставляет ссылку на корзину покупок и показывает сумму, подлежащую оплате, если в корзине есть какие-либо предметы.
У нас есть страницы, которые могут содержать или не показывать другую информацию из корзины. Например, страница «О нас» не нуждается в тележке, но макет сайта все равно будет нуждаться в ней.
Я установил глобальный объект для корзины покупок. Я могу получить доступ к этому объекту из макета главного сайта. Я также могу поместить его в viewmodel для страницы.
Таким образом, иногда макет основного сайта создает экземпляр корзины покупок, а viewmodel создает корзину для покупок независимо.
(РЕДАКТИРОВАТЬ) ТАК САЙТ ПЛАТЕЖИ НУЖДАЕТСЯ ОБЪЕКТОМ ПОКУПКИ КОРПУСА ДЛЯ КАЖДОЙ СТРАНИЦЫ - И СТРАНИЦЫ МОГУТ ИЛИ НЕ МОГУТ БЫТЬ НЕОБХОДИМОСТИ ОБЪЕКТОМ ПОКУПКИ.
Проблема: вид может иметь или не иметь корзину покупок, которую он мог бы вставить в ViewBag, чтобы макет сайта мог использовать его. Как я могу создать экземпляр объекта корзины только один раз в жизненном цикле?
public class ShoppingCart
{
// Complex, data intensive calculations upon instantiation
}
public class myViewModel
{
public ShoppingCart cart {get; set;}
}
В макете мастер сайта:
@{
ShoppingCart cart = new ShoppingCart(GlobalMemberID);
}
В странице, которая нуждается в Корзина:
@model myViewModel
Если нам нужна страница о нас, то вычислите его в контроллере. Вы уже знаете, что вам это нужно, поэтому сделайте это до того, как будет вызван вид. – jcolebrand
jcolebrand - Спасибо за ваш ответ. Если эта страница нуждается в ней, я могу рассчитать в контроллере, а затем передать корзину покупок для просмотра, тогда представление может передать корзину покупок в макет. Но если страница НЕ нужна, то как макет получит копию корзины покупок? Кроме того, если это необходимо где-то еще, как я могу его переместить? Мой вопрос: есть ли способ создать экземпляр только для каждого запроса, а затем использовать его как «глобально»? – Cary
Для того, что вы описываете, я бы увидел его как «положил его в базовый контроллер». – jcolebrand