Можете да добавите условията за приемане към класа RegisterModel в модела на акаунта (AccountModels.cs в директорията на моделите), като това:
[Display(Name = "Agree to Terms")]
public bool AgreeTandC { get; set; }
Трябва да актуализирате изгледа на регистъра, като добавите дисплея за това, така че да се показва поле за отметка и какъвто текст искате с него.
За съжаление не можете просто да използвате атрибута [Required]
, тъй като това е bool
и това, че не се проверява, е false, а не null. Има начини за създаване на персонализиран атрибут, изискван от bool, но те са малко работа. Може да е по-лесно за вас да добавите проверка в метода за регистриране в контролера на акаунти, за да видите дали е отметната, нещо подобно:
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
в метода за регистриране на контролера на акаунти, за да не упълномощавате потребителя.
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