I have a class in my model in MVC:
public class NewModel
{
public bool AllComplexes { get; set; }
public int UserID { get; set; }
public int? RoleID { get; set; }
public int ComplexID { get; set; }
[Required(ErrorMessage = "Please enter a user name."), StringLength(50)]
public string Username { get; set; }
[Required(ErrorMessage = "Please enter Password"), StringLength(100, ErrorMessage = "Password cannot be longer than 100 characters")]
public string Password { get; set; }
[Compare("Password", ErrorMessage = "Passwords do not match")]
[Required(ErrorMessage = "Please confirm Password")]
public string RetypePassword { get; set; }
[RegularExpression( "^[a-z0-9_\\+-]+(\\.[a-z0-9_\\+-]+)*@[a-z0-9-]+(\\.[a-z0-9]+)*\\.([a-z]{2,4})$" , ErrorMessage = "Invalid email format." )]
[Required(ErrorMessage = "Please enter your e-mail address."), StringLength(50)]
public string Email { get; set; }
public List<NEWCategoryModel> Categories { get; set; }
//public List<NEWPrivilegeModel> userPrivList { get; set; }
public List<DropDownItem> ComplexList { get; set; }
public List<DropDownItem> RoleList { get; set; }
public string NewRole { get; set; }
public NewModel()
{
}
}
The Email address entered is stored in :
public string Email { get; set; }
I need to compare that Email address to all the email addresses stored in the database using Data Annotation. I assume I will need a Custom Data Annotation? But I have no idea how to do it.
This is an example of the query to get al the email addresses from the database:
db.ContactInformations.Where(x => x.EMail != null).Select(x => x.EMail);
In this post you'll find a solution leveraging FluentValidation, which implements a custom DataAnnotation.
Your Unique Email Validation would look something along these lines:
This can help you to create custom validation. Then, to check user is already exist in database by email, try: