C# ASP.NET标识-验证IdentityUser上的唯一用户电子邮件地址

C# ASP.NET标识-验证IdentityUser上的唯一用户电子邮件地址,c#,asp.net,asp.net-mvc,validation,email,C#,Asp.net,Asp.net Mvc,Validation,Email,我正在使用ASP.NET标识。我已经创建了自己的用户类扩展IdentityUser。 我正在尝试向user classes电子邮件属性添加验证,以确保用户的电子邮件地址是唯一的 为此,我已覆盖IdentityUser电子邮件属性,并在其中添加了自定义ValidationAttribute。如下图所示: [UniqueUserEmail] public override string Email { get { return base.Email; } set { base.Ema

我正在使用ASP.NET标识。我已经创建了自己的用户类扩展IdentityUser。 我正在尝试向user classes电子邮件属性添加验证,以确保用户的电子邮件地址是唯一的

为此,我已覆盖IdentityUser电子邮件属性,并在其中添加了自定义ValidationAttribute。如下图所示:

[UniqueUserEmail]
public override string Email
{
    get { return base.Email; }
    set { base.Email = value; }
}

public class UniqueUserEmailAttribute : ValidationAttribute
{
    public override bool IsValid(object value)
    {
        return true;
    }
}
我曾计划在ASP.NET identity UserManager类上使用FindByEmail方法来检测任何重复的电子邮件地址

我的问题是如何正确访问新ValidationAttribute中的UserManager以访问FindByEmail方法。我还想知道其他人是如何解决这个问题的。添加访问数据库的验证。特别是如何防止ASP.NET身份用户以这种方式使用重复的电子邮件地址

我一直在考虑使用远程验证属性,但它似乎有点重。我知道ApplicationUserManager UserValidator RequireUniqueMail,但我希望我的模型验证是一致的


谢谢您的时间。

如果您的用户经理接管了数据库上下文,您可以简单地执行此操作

public class UniqueUserEmailAttribute : ValidationAttribute
{
    public override bool IsValid(object value)
    {
        var manager = new UserManager(new DbContext());

        //Find the email address            

        return true;
    }
}

希望这对尝试后有所帮助。Microsoft.AspNet.Identity.UserManager需要用户创建一个循环引用。谢谢你的帮助。你有多种TUser类型吗?如果没有,您可以传递所需的类型。