Вы можете добавить условия принятия в класс RegisterModel в модели учетной записи (AccountModels.cs в каталоге Models), например:
[Display(Name = "Agree to Terms")]
public bool AgreeTandC { get; set; }
Вы должны обновить представление регистрации, добавив для этого отображение, чтобы отображался флажок и любой текст, который вы хотите с ним.
К сожалению, вы не можете просто использовать атрибут [Required]
, так как это bool
, а отсутствие проверки является ложным, а не нулевым. Есть способы создать настраиваемый атрибут bool required, но они немного трудоемки. Возможно, вам будет проще добавить проверку в методе регистрации в контроллере учетных записей, чтобы увидеть, отмечен ли он, например, так:
if(model.AgreeTandC == false)
{
ModelState.AddModelError("AgreeTandC", "You must agree to the Terms and Conditions");
return View(model);
}
Я не использовал ModelState.AddModelError
раньше, но я думаю, что это сработает (отобразит ошибку пользователю), в противном случае просто замените его на ViewBag.Error = "You must agree to the Terms and Conditions";
и добавьте это в модель представления регистра.
Что касается электронной почты, это не сложно, вам нужно добавить возможность отправки электронной почты что-то вроде MvcMailer. Вам также необходимо изменить строку Membership.CreateUser
в методе Register контроллера учетных записей, чтобы не авторизовать пользователя.
Membership.CreateUser(model.UserName, model.Password, model.Email, null, null, false, null, out createStatus);
Я думаю, так и должно быть. Затем, если createStatus == MembershipCreateStatus.Success)
отправить электронное письмо с GUID подтверждения string confirmationGuid = user.ProviderUserKey.ToString();
Вам также нужно будет создать метод для принятия идентификатора подтверждения (когда они нажимают ссылку в своем электронном письме).
Я лишь вкратце затронул часть электронной почты, в Интернете существует множество блогов, в которых подробно рассматривается отправка регистрационных писем.
person
Garrett Fogerlie
schedule
07.07.2012