Я не верю, что есть лучший / правильный способ, но способ, которым я бы это сделал ...
Каждый волшебник получает свою страницу. Каждый шаг получает свой собственный div. Все шаги в одной форме.
Предыдущие / следующие кнопки будут по существу скрывать / показывать div на каждом этапе процесса. Кнопка отправки последнего шага отправляет всю форму. Было бы довольно просто реализовать это с помощью jQuery, и его было бы легко поддерживать, поскольку все шаги мастера выполняются в одной ViewPage.
На стороне контроллера у вас будет два метода контроллера: версия HttpVerbs.Get, которая подготовит форму для просмотра, и версия HttpVerbs.Post, которая примет FormsResult и проанализирует его, чтобы получить информацию, необходимую для отправки. ответы пользователя на хранилище / другие процессы.
Ух ты, твой босс воняет.
Этот ответ почти изящно работает для тех ******, у которых отключен JavaScript (да, оба). Вы можете настроить его, чтобы скрыть следующие предыдущие кнопки с помощью CSS и показать их в своем коде JavaScript. Таким образом, люди с javascript увидят мастера, а люди без javascript увидят всю форму (без кнопок «следующий / предыдущий»).
Другой вариант - создать представление для каждого шага в мастере. Вы можете сохранить промежуточные результаты формы в сеансе. Этот способ потребует много времени и усилий для реализации, а это означает, что вы, вероятно, сможете выжать из своего босса сверхурочную работу, когда продемонстрируете, за двадцать минут работы, которую вы тратите во время обеда, насколько легко реализовать маршрут javascript.