显示所有密码规则自定义数据注释
Display all password rules custom Data Annotation
您好,我已经通过数据注释设置了自定义密码规则。它可以工作,但是,如果不满足密码要求,最好向用户显示所有错误消息。
我的代码遵循这个 -
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
string password = value.ToString();
if (password.Length < 8)
{
return new ValidationResult("Password must contain at least 8 characters");
}
if (password.Count(c => char.IsLower(c)) == 0)
{
return new ValidationResult("Password must contain a lowercase character");
}
//other password rules removed for berevity
else
{
return ValidationResult.Success;
}
}
那么如果密码没有小写字符且少于 8 个字符,我将如何显示这两个 if 语句而不是只返回第一个 if 语句?
您可以将所有错误消息保存在一个字符串中,然后 return 检查所有规则后将其保存。
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
string password = value.ToString();
var errorMessage = "";
if (password.Length < 8)
{
errorMessage += "Password must contain at least 8 characters.";
}
if (password.Count(c => char.IsLower(c)) == 0)
{
errorMessage += "Password must contain a lowercase character.";
}
//other rules
if(String.IsNullOrEmpty(errorMessage))
{
return ValidationResult.Success;
}
else
{
return new ValidationResult(errorMessage);
}
}
您好,我已经通过数据注释设置了自定义密码规则。它可以工作,但是,如果不满足密码要求,最好向用户显示所有错误消息。
我的代码遵循这个 -
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
string password = value.ToString();
if (password.Length < 8)
{
return new ValidationResult("Password must contain at least 8 characters");
}
if (password.Count(c => char.IsLower(c)) == 0)
{
return new ValidationResult("Password must contain a lowercase character");
}
//other password rules removed for berevity
else
{
return ValidationResult.Success;
}
}
那么如果密码没有小写字符且少于 8 个字符,我将如何显示这两个 if 语句而不是只返回第一个 if 语句?
您可以将所有错误消息保存在一个字符串中,然后 return 检查所有规则后将其保存。
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
string password = value.ToString();
var errorMessage = "";
if (password.Length < 8)
{
errorMessage += "Password must contain at least 8 characters.";
}
if (password.Count(c => char.IsLower(c)) == 0)
{
errorMessage += "Password must contain a lowercase character.";
}
//other rules
if(String.IsNullOrEmpty(errorMessage))
{
return ValidationResult.Success;
}
else
{
return new ValidationResult(errorMessage);
}
}