0

我正在自学 Asp .net MVC 3。我已经到了现在需要合并用户帐户系统的阶段。我从标准的 Asp .net MVC 3 会员提供程序开始,并希望在大多数情况下坚持使用它,并将所有其他用户详细信息存储在链接到用户表的另一个表中。

但是,我想在注册时添加两个功能:1)确认电子邮件 2)接受 T&C。

有没有一种简单的方法可以在不构建自定义会员提供程序的情况下做到这一点?

4

2 回答 2

3

就个人而言,我不认为确认电子邮件/条款和条件应该成为会员提供商的一部分。

您通常会在您的 AccountController(或您拥有的任何等价物)中处理类似的事情。

例如,如果您有一个注册操作,一旦您使用会员提供者保存用户并且一切看起来都不错,您将发送确认电子邮件(从操作触发的代码)

于 2012-07-07T08:50:00.947 回答
1

您可以将接受条款和条件添加到 Account Model 中的 RegisterModel 类(Models 目录中的 AccountModels.cs),如下所示:

[Display(Name = "Agree to Terms")]
public bool AgreeTandC { get; set; }

您必须更新注册视图,为此添加显示,以便显示复选框以及您想要的任何文本。

不幸的是,您不能简单地使用该[Required]属性,因为这是 abool并且未检查是 false 不为空。有一些方法可以创建自定义 bool 必需属性,但它们有点工作。您可能更容易在 Account Controller 中的 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会有所帮助。您还需要更改Membership.CreateUserAccount Controller 的 Register 方法中的行以不授权用户。

Membership.CreateUser(model.UserName, model.Password, model.Email, null, null, false, null, out createStatus);

我认为应该是这样。然后,如果createStatus == MembershipCreateStatus.Success)发送带有确认 GUID 的电子邮件string confirmationGuid = user.ProviderUserKey.ToString();

您还必须制定一种方法来接受确认 ID(当他们单击电子邮件中的链接时。)

我只是简单地谈到了电子邮件部分,网上有很多博客都详细介绍了发送注册电子邮件。

于 2012-07-07T09:52:19.893 回答