我有一个验证规则,对于我想要集中到DRY的许多属性来说很常见,但是NotEmpty()
规则等工作正常,Matches(...)
和其他仅字符串验证器规则不编译。
没问题:
public static IRuleBuilderOptions<T, TProperty> MustNotContainHtml<T, TProperty>(this IRuleBuilderOptions<T, TProperty> ruleBuilder)
{
return ruleBuilder.NotEmpty().WithMessage("Some message.");
}
理解上不会编译,因为使用仅为字符串的Matches(...)
:
public static IRuleBuilderOptions<T, TProperty> MustNotContainHtml<T, TProperty>(this IRuleBuilderOptions<T, TProperty> ruleBuilder)
{
return ruleBuilder.Matches("<[a-z!/?]|&#").WithMessage("'{PropertyName}' contains special HTML characters which is not allowed.");
}
哪些规则构建器签名可用于仅字符串选项?
答案 0 :(得分:1)
解决方案是重用实际的RegularExpressionValidator
:
public static IRuleBuilderOptions<T, string> MustNotContainHtml<T>(this IRuleBuilder<T, string> ruleBuilder)
{
return ruleBuilder.SetValidator(new RegularExpressionValidator("<[a-z!/?]|&#")).WithMessage("Some custom message.");
}