.Net Core=我想为UserValidator添加个性化规则

.Net Core=I want add personality rules for UserValidator

例如; 我在 table 中有密码列。进入系统时任何人都必须输入密码。我想包含至少一个字符的密码,例如(/,-,?,+,!)。我做了这样一个代码;

public UserValidator()
{
    RuleFor(p => p.Password).MinimumLength(10);
    RuleFor(p => p.Password).Must(MustBeCharacter);
}
private bool MustBeCharacter(string arg)
{
    return arg.Contains("."+","+"?"+"!"+"*"+"-"+"+");
}

我有问题。系统需要所有这些 ("."+","+"?"+"!"+"*"+"-"+"+")。但我至少还想要一个。我该如何执行此规则。 非常感谢

  • 在您当前的方法中,您将所有特殊字符连接成一个字符串并对其应用 Contains()。这就是原因,系统期望所有特殊字符都应该是您的 arg 字符串的一部分。

  • 您应该在数组或列表中定义所有特殊字符,然后使用 .Any() 检查字符串 arg,[= 中至少应出现一辆特殊汽车18=]

    private bool MustBeCharacter(string arg)
    { 
        var specialChars = ".,?!*-+".ToCharArray();
        return specialChars.Any(x => arg.Contains(x));
    }
    

在线试用:.Net Fiddle

系统需要所有这些,因为您正在寻找整个字符串而不是一个字符。

你首先需要数组

private string[] arr = [".",",","?","!","*","-","+"];
private bool MustBeCharacter(string arg)
{  
        return arr.Any(s => args.Contains(s));
    
}