ASP.NET MVC - Совместное использование состояния сеанса между контроллерами

Я все еще в основном незнаком с Инверсией Контроля (хотя я узнаю об этом сейчас), поэтому, если это решение моего вопроса, просто дайте мне знать, и я вернусь к изучению этого вопроса.

У меня есть пара контроллеров, которые нуждаются в переменной Session, естественно, ничего особенного не произошло из-за того, как Session работает в первую очередь, но это заставило меня задуматься о том, каков самый чистый способ разделения связанных объектов между двумя отдельными контроллерами. В моем конкретном сценарии у меня есть UploadController и ProductController, которые работают вместе для загрузки файлов изображений. Поскольку файлы загружаются UploadController, данные о загрузке сохраняются в сеансе. После этого мне нужно получить доступ к этим данным Session в ProductController. Если я создаю свойство get / set для переменной Session, содержащей информацию о моей загрузке на обоих контроллерах, я смогу получить доступ к этим данным, но в то же время я буду нарушать все виды DRY, не говоря уже о создании, в лучшем случае запутанный дизайн, когда объект разделяется и изменяется двумя полностью отключенными объектами.

Что ты предлагаешь?

Точный контекст:

Загрузка файла View публикует файл в UploadController.ImageWithpreview (), который затем считывает опубликованный файл и копирует его во временный каталог. После сохранения файла другой класс создает эскиз загруженного изображения. Путь как к исходному файлу, так и к сгенерированной миниатюре затем возвращаются с помощью JsonResult в обратный вызов javascript, который обновляет некоторое динамическое содержимое в форме на странице, которая может быть "сохранена". или "Отменено". Сохранено ли загруженное изображение или оно пропущено, мне нужно либо переместить, либо удалить как его, так и созданный эскиз из временной директории. Для этого UploadController отслеживает все загружаемые файлы и их миниатюры в поддерживаемом сеансом объекте Queue.

Вернемся в представление: после заполнения формы сгенерированным эскизом загруженного изображения форма отправляется обратно в контроллер ProductsController, где идентифицируется выбранный файл (в настоящее время я сохраняю имя файла в скрытом поле, которое, как я понимаю, является ужасная уязвимость), а затем скопировать из временного каталога в постоянное место. В идеале я хотел бы просто получить доступ к очереди, которую я сохранил в сеансе, чтобы форма не содержала местоположение изображения, как сейчас. Вот как я представлял свое решение, но я с нетерпением буду слушать любые комментарии или критические замечания.

Ответы на вопрос(2)

Ваш ответ на вопрос