ASP.NET MVC - udostępnianie stanu sesji między kontrolerami

Wciąż nie znam się na Inversion of Control (choć teraz się o tym uczę), więc jeśli to jest rozwiązanie mojego pytania, daj mi znać, a ja wrócę do nauki o tym.

Mam parę kontrolerów, które wymagają zmiennej Session, oczywiście nic specjalnego nie wydarzyło się z powodu tego, jak Session działa w pierwszej kolejności, ale zastanawiałem się, jaki jest najczystszy sposób udostępniania powiązanych obiektów między dwoma oddzielnymi kontrolerami. W moim konkretnym scenariuszu mam kontroler UploadController i kontroler ProductController, które współpracują ze sobą, aby przesyłać pliki obrazów. Gdy pliki są przesyłane przez UploadController, dane dotyczące przesyłania są przechowywane w sesji. Po tym zdarzeniu muszę uzyskać dostęp do danych sesji w kontrolerze produktu. Jeśli utworzę właściwość get / set dla zmiennej Session zawierającej moje informacje o przesyłaniu w obu kontrolerach, będę mógł uzyskać dostęp do tych danych, ale jednocześnie naruszę wszystkie rodzaje DRY, nie wspominając o tworzeniu, w najlepszym razie mylący projekt, w którym obiekt jest współdzielony i modyfikowany przez dwa całkowicie odłączone obiekty.

Co sugerujesz?

Dokładny kontekst:

Przesyłanie pliku Widok wysyła plik do UploadController.ImageWithpreview (), który następnie odczytuje wysłany plik i kopiuje go do katalogu tymczasowego. Po zapisaniu pliku inna klasa tworzy miniaturę przesłanego obrazu. Ścieżka do oryginalnego pliku i wygenerowanej miniatury jest następnie zwracana wraz z JsonResult do wywołania zwrotnego javascript, które aktualizuje dynamiczną zawartość w formularzu na stronie, który może być „Zapisany” lub „Anulowany”. Niezależnie od tego, czy przesłany obraz jest zapisany, czy pominięty, muszę albo przenieść, albo usunąć zarówno go, jak i wygenerowaną miniaturę z katalogu tymczasowego. Aby to ułatwić, UploadController śledzi wszystkie przesłane pliki i ich miniatury w obiekcie kolejki obsługiwanym przez sesję.

Powrót do widoku: po wypełnieniu formularza wygenerowaną miniaturą przesłanego obrazu formularz jest przesyłany z powrotem do kontrolera ProductsController, w którym znajduje się wybrany plik (obecnie przechowuję nazwę pliku w ukrytym polu, co, jak zdaję sobie sprawę, jest straszna luka), a następnie skopiowana z katalogu tymczasowego do stałej lokalizacji. W idealnej sytuacji chciałbym po prostu uzyskać dostęp do kolejki, którą zapisałem w Sesji, aby formularz nie musiał zawierać lokalizacji obrazu, tak jak teraz. W ten sposób wyobrażałem sobie moje rozwiązanie, ale z niecierpliwością słucham wszelkich komentarzy i krytyki.

questionAnswers(2)

yourAnswerToTheQuestion