我有一个名为 SignUp 的视图模型,其 EmailAddress 属性设置如下:
[Required]
[DuplicateEmailAddressAttribute(ErrorMessage = "This email address already exists")]
public string EmailAddress { get; set; }
自定义验证器如下所示:
public class DuplicateEmailAddressAttribute : ValidationAttribute
{
public override bool IsValid(object value)
{
PestControlContext _db = new PestControlContext();
int hash = value.ToString().GetHashCode();
if (value == null)
{
return true;
}
if (_db.Users.Where(x => x.EmailAddressHash == hash).Count() > 0)
return false;
else
return true;
}
}
我遇到的问题是,如果用户在注册表单上将电子邮件地址字段留空,则应用程序将引发空引用异常错误(我认为它正在数据库中查找“”但找不到它)。我不明白为什么Required 属性没有处理这个问题 - 为什么它直接跳到自定义验证器中?