Как обрабатывать регистрацию пользователей с несколькими страницами и сущностями - PullRequest
1 голос
/ 06 декабря 2011

Итак, я нахожусь в своем проекте, где мне нужно реализовать систему регистрации пользователей для приложения MVC 3 с Entity Framework.

У меня есть следующие объекты, которые необходимо заполнить как частьрегистрации:

  • Пользователь
  • Персона
  • Роль
  • Бизнес

Старое приложение (мы позвонимv1) обработал процесс регистрации с помощью класса, содержащего все данные, а затем после каждого шага регистрации сохранил класс в сеансе

Я просто промочил ноги с помощью MVC3 / EF4.1,Мой первоначальный поиск информации заставил меня взглянуть на хранилище и схему работы, чтобы справиться с этим.Тем не менее, я вижу несколько источников, которые говорят, что шаблоны репозитория на самом деле не нужны с MVC3 / Ef4.1.

, поэтому мой вопрос таков.создать регистрацию пользователя, как это было в v1, и этот класс, сохраняемый в сеансе, теперь технически является хранилищем, или есть лучший способ использовать MVC3 / EF4.1 для обработки регистрации нового пользователя с потоком, который охватывает несколько страниц/views.

Ответы [ 2 ]

3 голосов
/ 09 декабря 2011

Наша регистрация MVC3 охватывает несколько просмотров страниц (прогрессивное раскрытие) с похожими объектами (Пользователь / Лицо / Роли / Принадлежность к Учреждениям).Я не уверен, что у вас есть полное представление о шаблонах Repository или UnitOfWork.Это паттерны, связанные с постоянством, которые не имеют никакого отношения к сеансу, который является механизмом управления состоянием HTTP.

Я предлагаю вам записывать в базу данных в конце каждого просмотра страницы (когда пользователь отправляет форму), а не накапливать все данные в сеансе.Если вам нужно передать информацию из одного представления в другое в цепочке, вы можете использовать словарь TempData контроллера для хранения ключей сущностей (TempData фактически использует Session в фоновом режиме).

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

В первую очередь мы собираем пользователя и пароль.Процесс выглядит следующим образом:

  1. Пользователь вводит адрес электронной почты (форма 1)
  2. Если возможно, электронное письмо с подтверждением отправляется на адрес
  3. Пользователь подтверждает адрес электронной почты, используя электронную почтусекрет (форма 2)
  4. Пользователь создает пароль (форма 3)
  5. Пользователь вводит личную информацию (форма 4)
  6. Пользователь вводит деловую информацию (форма 5)

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

1 голос
/ 09 декабря 2011

не хватило символов в ответе на комментарий. я могу сделать что-то подобное?

[HttpGet]
public ActionResult UserInfo(RegistrationViewModel model)
{
    return View(model);
}

[HttpPost]
public ActionResult UserInfo(RegistrationViewModel model)
{
    return View("BusinessInfo",model);
}

[HttpGet]
public ActionResult BusinessInfo(RegistrationViewModel model)
{
    return View(model);
}

[HttpPost]
public ActionResult BusinessInfo(RegistrationViewModel model)
{
    return View("LicenseAgreement",model);
}

[HttpGet]
public ActionResult LicenseAgreement(RegistrationViewModel model)
{
    return View();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...