【发布时间】:2020-07-23 02:32:20
【问题描述】:
namespace EmployeeManagement.ViewModels
{
public class RegisterViewModel
{
[Required]
[EmailAddress]
[Remote(action:"IsEmailInUse" , controller:"Account")]
[ValidEmailDomain(allowedDomain:"mail.com" , ErrorMessage ="Domain should be mail.com")]
public string Email { get; set; }
[Required]
[DataType(DataType.Password)]
public string Password { get; set; }
[DataType(DataType.Password)]
[Display(Name ="Confirm password")]
[Compare("Password",
ErrorMessage ="Password and confirmation password do not match")]
public string ConfirmPassword { get; set; }
}
}
我正在对 Email 属性应用 ValidEmailDomain 和 IsEmailInUse 验证。我想将这两个验证都视为远程验证。我该怎么做? 如果无法进行远程验证,我该如何将这两个验证放在一起
这是 ValidEmailDomain 的自定义验证代码
public class ValidateEmailDomainAttribute : ValidationAttribute
{
private readonly string allowedDomain;
public ValidEmailDomainAttribute(string allowedDomain )
{
this.allowedDomain = allowedDomain;
}
public override bool IsValid(object value)
{
string[] strings = value.ToString().Split('@');
return strings[1].ToUpper() == allowedDomain.ToUpper();
} Vali
}
这是 IsEmailInUse 的远程验证代码
[AcceptVerbs("Get","Post")]
[AllowAnonymous]
public async Task<IActionResult> IsEmailInUse(string email)
{
var user = await userManager.FindByEmailAsync(email);
if(user == null)
{
return Json(true);
}
else
{
return Json($"Email {email} already in use");
}
}
【问题讨论】:
标签: asp.net-mvc validation asp.net-core