Наша регистрация MVC3 охватывает несколько просмотров страниц (прогрессивное раскрытие) с похожими объектами (Пользователь / Лицо / Роли / Принадлежность к Учреждениям).Я не уверен, что у вас есть полное представление о шаблонах Repository или UnitOfWork.Это паттерны, связанные с постоянством, которые не имеют никакого отношения к сеансу, который является механизмом управления состоянием HTTP.
Я предлагаю вам записывать в базу данных в конце каждого просмотра страницы (когда пользователь отправляет форму), а не накапливать все данные в сеансе.Если вам нужно передать информацию из одного представления в другое в цепочке, вы можете использовать словарь TempData контроллера для хранения ключей сущностей (TempData фактически использует Session в фоновом режиме).
Существует возможность, что при таком подходе вы можете получить неполную информацию в базе данных, если пользователь не выполнит все шаги регистрации.Тем не менее, он позволяет им продолжать процесс регистрации без необходимости повторного ввода информации.Принимая во внимание, что если вы используете сеанс, а ваш пользователь случайно закрыл окно браузера, все данные этого сеанса будут потеряны, и пользователю придется начать все сначала.
В первую очередь мы собираем пользователя и пароль.Процесс выглядит следующим образом:
- Пользователь вводит адрес электронной почты (форма 1)
- Если возможно, электронное письмо с подтверждением отправляется на адрес
- Пользователь подтверждает адрес электронной почты, используя электронную почтусекрет (форма 2)
- Пользователь создает пароль (форма 3)
- Пользователь вводит личную информацию (форма 4)
- Пользователь вводит деловую информацию (форма 5)
Если пользователь только выполнил поднабор этих шагов, мы можем использовать информацию базы данных, чтобы определить, какой шаг следующий в процессе регистрации, и направить их в это представление, пока процесс регистрации не будет завершен.