2010-01-15 2 views
2

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

  1. фотографии Страница
  2. доставка адрес
  3. редактировать адрес доставки (добавлять/редактировать)
  4. способ доставки
  5. оплата
  6. заказ

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

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

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

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

ответ

1

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

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

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

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

+0

да, я просто ненавижу сеансы :) – mrblah

+0

что означает «я просто ненавижу сеансы»? Вам не нравится, когда вы можете отслеживать информацию о пользователях через последующие (в действительности, изолированные) сообщения? – hackerhasid

+0

Я уверен, что это означает, что он не понимает их, статичиппо. – delfuego

0

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

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

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

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

Смежные вопросы