рабочий процесс оформления заказа, проблемы с перенаправлениями

2

Мой процесс проверки имеет следующий рабочий процесс:

  • страница проверки
  • адрес доставки
  • изменить адрес доставки (добавить/изменить)
  • способ доставки
  • платеж
  • порядок размещения

Каждый из вышеперечисленных шагов имеет свое действие в том же контроллере.

Теперь проблема в том, что если человек добирается до # 5 и хочет изменить адрес, они возвращаются к # 3. Но когда они попали в submit, они переходят к следующему шагу, № 4, но они должны вернуться прямо к №5.

Я знаю, что могу передавать информацию через строку запроса/форму и сообщать # 3, чтобы проверить наличие этого ключа, если он там, а затем перенаправить на # 5.

Существуют ли проверенные, передовые методы управления рабочим процессом, подобные этому в asp.net-mvc (или вообще)?

Теги:
model-view-controller
asp.net-mvc

2 ответа

1

Обычно я настраиваю сеанс для хранения состояния и данных пользователя и определяю, какой шаг перейти к следующему. Следовательно, контроллер при вызове может запустить некоторую логику, чтобы определить, в каком состоянии находится пользователь, а затем вызвать код рендеринга для вывода формы, связанной с текущим состоянием пользователя.

IMHO, это упрощает процесс, поскольку вы не делегируете проверку состояния "что мое следующее состояние" на уровень форм, а в централизованное местоположение, что упрощает добавление в новую бизнес-логику в будущем.

Надеюсь, это поможет!

(Вы можете заменить сеанс невидимыми полями формы, строками запроса и т.д.)

  • 0
    да я просто ненавижу сессии :)
  • 0
    что значит "я просто ненавижу сеансы"? Вам не нравится возможность отслеживать информацию о пользователях в последующих (в действительности, изолированных) сообщениях?
Показать ещё 2 комментария
0

Если вы действительно "ненавидите сеансы", как вы говорите, есть потенциально другой параметр, который должен передать запрос для всех "обратных" операций, определяющих, куда идти дальше.

Так работает большинство страниц входа в систему - если вы не авторизованы для просмотра страницы, она перенаправляется на страницу входа с параметром querystring redirectUrl. Затем при успешном входе в систему вы будете перенаправлены на страницу, из которой вы изначально пришли.

И просто чтобы немного упростить код, вы можете перегрузить метод RedirectToAction() на вашем контроллере таким образом, чтобы он перенаправлял к данному действию UNLESS там специальную строку запроса, и в этом случае она перенаправляет туда.

изменить: Я знаю, что вы упомянули это как возможность, но я все равно его разместил, потому что: 1) нет ничего плохого в этом (особенно, если вы "ненавидите сеансы" ), и 2) вы упомянули о том, что ваша проверка действий на наличие ключа, который, я думаю, может быть лучше написан, как я описал (с использованием перегрузки - DRY )

Ещё вопросы

Сообщество Overcoder
Наверх
Меню