TempData
сохраняется в сеансе , но только до следующего запроса , поэтому высока вероятность потери всего, что вы там храните.Это не тот способ, которым предполагалось его использовать.
С точки зрения вашего пользователя, атомарность их операций не почти так важна, как гарантия того, что их данные не будут потеряны неожиданно.Как пользователь, я ненавижу , когда мне нужно пойти, посмотреть кучу информации, чтобы закончить заполнение формы, а затем выяснить, что мой сеанс истек, прежде чем я нажму "закончить".
Я бы посоветовал вам смоделировать прогресс, достигнутый пользователем в вашем хранилище данных (возможно, в данном случае это комбинация базы данных и хранилища файлов).Позвольте пользователю загружать файлы и сохранять файлы в определенном месте.Сделайте так, чтобы в базе данных была модель, представляющая различные данные формы, которые они заполняют, со ссылками на файлы, загруженные пользователем.Когда пользователь завершает последний шаг, вы можете пометить мастера как «завершенный» в вашей базе данных, который как бы завершает все, что было сделано до сих пор.
Вы можете решить, хотите ли вы, чтобы пользователи могли «продолжить»«Мастер после того, как они были неактивны в течение определенного периода времени, или вы предпочитаете использовать политику, при которой любые мастера, которые не завершены после окончания сеанса пользователя, могут быть бесплатно удалены.
Обновление
Я не осознавал, что поведение TempData
изменилось, но элементы теперь сохраняются там до тех пор, пока они не будут считаны из TempData
или до истечения сеанса.Это делает данные немного менее изменчивыми, чем раньше, но это все еще опасное место для хранения данных, которые ваши пользователи потратили время на ввод и загрузку.