我正在自学Asp .net MVC 3。我已经到达了一个阶段,我现在需要纳入用户帐户系统。我从标准的Asp .net MVC3成员提供程序开始,并希望在大多数情况下坚持使用它,并将所有其他用户详细信息存储在另一个链接到users表的表中。
然而,我想在注册时添加两个功能: 1)确认电子邮件2)接受T&C。
有没有一种简单的方法可以在不构建自定义成员提供程序的情况下做到这一点?
发布于 2012-07-07 16:50:01
就我个人而言,我不认为确认电子邮件/条款和条件应该是会员提供者的一部分。
你通常会在你的AccountController (或者任何你拥有的等价物)中处理类似的事情。
例如,如果您有一个注册操作,一旦您使用成员资格提供程序保存了一个用户,并且一切正常,那么您将发送确认电子邮件(由该操作触发的代码)。
发布于 2012-07-07 17:52:20
您可以将接受条款和条件添加到帐户模型( Models目录中的AccountModels.cs)的RegisterModel类中,如下所示:
[Display(Name = "Agree to Terms")]
public bool AgreeTandC { get; set; }您必须更新Register视图,为此添加显示,以便显示一个Check以及您想要的任何文本。
不幸的是,您不能简单地使用[Required]属性,因为这是一个bool,没有被检查是false而不是null。有一些方法可以创建自定义bool required属性,但这需要一些工作。您可以在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.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 (当他们单击其电子邮件中的链接时)。
我刚刚简单地谈到了电子邮件部分,网上有许多博客详细介绍了发送注册电子邮件的内容。
https://stackoverflow.com/questions/11373559
复制相似问题