Я использую шаблон PRG (Post-Redirect-Get) в моем проекте MVC. Идея состоит в том, что вы не возвращаете представление из своего действия, а скорее на успешный POST, который вы перенаправляете на другое представление, полностью использующее Get (возможно, в базе данных), чтобы вернуть сохраненные значения и повторно отобразить их (подумайте о " Сохранить успешную ").MVC PRG pattern - прохождение модели вокруг
В моем случае у меня нет базы данных, чтобы сохранить сохраненные детали, и я хотел бы знать надежный способ хранения, а затем получить сохраненные данные на следующей странице.
я делал
RedirectToAction("Success", myViewModel)
, который я понимаю, не так, не в последнюю очередь потому, что она имеет все значения в строке URL. Что мне нужно сделать, это
RedirectToAction("Success")
, а затем каким-то образом получить значения обратно, построить ViewModel и дать его мнение.
Я знаю, что есть ViewBag, TempData, ViewData и Session, но без большого тестирования в различных сценариях. Я не знаю, какой из них подходит для моей ситуации. Статика, очевидно, не подходит для публичного сайта.
Если вы работаете с PRG без базы данных, каков способ сохранения данных? Или я могу просто бросить какую-то ошибку & перенаправить, если пользователь вернется & вперед?
Большое спасибо заранее.
EDIT: Пример сценария - страхование автомобиля. Пользователь посещает сайт, заполняет личные данные и хиты Submit. На следующей странице представлены параметры (сторонний, кражи, добровольный избыток и т. Д.), И при выборе их вызов через AJAX производится для получения котировки.
Все личные данные отправляются вместе с вариантами. Но нет учетной записи пользователя, и ничего не было записано в базу данных (Закон о защите данных - мы не храним данные, если только разрешение не получено, и запрос будет отключать людей, если они просто просматриваются).
ОБНОВЛЕНИЕ: Решение, на котором мы остановились, было следующим: Подробности Действие POST создает OptionViewModel. Он помещается в TempData. Вызывается RedirectToAction («Опции»). В акции Options мы получаем ViewModel
OptionsViewModel viewModel = (OptionsViewModel)TempData.Peek("MyViewModel"); // .Peek preserves the value
Если ViewModel равна нулю, мы RedirectToAction() обратно к деталям. В противном случае мы вернем представление «Параметры».
Ваш ответ указал мне в правильном направлении, поэтому я счастлив принять это как ответ. Я добавил свое решение выше. – VictorySaber