我正在教自己Asp .net MVC 3.我已经到了一个我现在需要合并用户帐户系统的阶段。我从标准的Asp .net MVC 3会员提供商开始,并希望在大多数情况下坚持使用它,并将所有其他用户详细信息存储在链接到用户表的另一个表中。
但是,我想在注册时添加两个功能: 1)确认电子邮件 2)接受T& C.
如果不构建自定义成员资格提供程序,是否有一种简单的方法可以做到这一点?
答案 0 :(得分:3)
就个人而言,我不相信确认电子邮件/条款和条件应该是会员提供者的一部分。
你通常会在你的AccountController中处理类似的东西(或者你拥有的任何东西)。
例如,如果您有注册操作,一旦您使用成员资格提供程序保存用户并且一切看起来都不错,您就会发出确认电子邮件(代码从操作中触发)
答案 1 :(得分:1)
您可以在帐户模型(Models目录中的AccountModels.cs)中将接受条款和条件添加到RegisterModel类,如下所示:
[Display(Name = "Agree to Terms")]
public bool AgreeTandC { get; set; }
您必须更新“注册”视图,为此添加显示,以便显示复选框以及您想要的任何文本。
不幸的是,您不能简单地使用[Required]
属性,因为这是bool
而未被检查的是false而不是null。有一些方法可以创建自定义bool必需属性,但它们有点工作。您可以更容易地在帐户控制器中的Register方法中添加一个检查以查看是否已选中它,如下所示:
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将有助于此。您还需要更改帐户控制器的Register方法中的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();
您还必须制作一种方法来接受确认ID(当他们点击电子邮件中的链接时。)
我只是简单地谈到了电子邮件部分,网上有很多博客都会详细发送注册电子邮件。