Я не считаю, что это лучший/правильный путь, но так, как я бы сделал это ...
Каждый мастер получает свою собственную страницу. Каждый шаг получает свой собственный div. Все шаги в той же форме.
Предыдущие/следующие кнопки по существу скроют/покажут div на каждом этапе процесса. Кнопка отправки последнего шага представляет всю форму. Было бы довольно тривиально реализовать это с помощью jQuery, и его было бы легко поддерживать, поскольку все шаги мастера находятся в одной ViewPage.
На стороне контроллера у вас есть два метода контроллера: версия HttpVerbs.Get, которая подготовит форму для просмотра и версию HttpVerbs.Post, которая примет форму FormsResult и проанализирует ее, чтобы получить информацию, необходимую для отправьте ответы пользователя на хранение/другие процессы.
Ничего себе, ваш босс воняет.
Этот ответ почти изящно работает для тех ******, у которых отключен javascript (да, оба они). Вы можете настроить его, чтобы скрыть следующие предыдущие кнопки с помощью CSS и показать их в своем javascript-коде. Таким образом, люди с javascript видят мастера, а люди без javascript будут видеть всю форму (без кнопок next/prev).
Другой вариант - создать представление для каждого шага мастера. Вы можете сохранить промежуточные результаты формы в сеансе. Этот способ будет стоить много времени и усилий для реализации, а это означает, что вы, вероятно, могли бы сжать некоторые сверхурочные из своего босса, когда вы продемонстрируете примерно через двадцать минут усилий, которые вы проводите во время обеда, насколько легко реализовать javascript-маршрут.
Почему «нет JavaScript»? Вместо этого я использовал бы Flash или Silverlight :) – 2008-11-24 22:16:04
Надеюсь, ваш босс уже не ваш босс ... из-за того, что он сказал ...;) – 2013-12-17 17:45:57