在同一字段上万无一失的多个验证器

Foolproof multiple validators on the same fields

我目前使用万无一失的方式进行验证:

[RequiredIfNot("type", 3, ErrorMessage = "Please enter at least one value")]
public int[] audites { get; set; }

但客户想要添加验证:

[RequiredIfNot("type", 3, ErrorMessage = "Please enter at least one value")]
[RequiredIfNot("nature", 1, ErrorMessage = "Please enter at least one value")]
[RequiredIfNot("nature", 3, ErrorMessage = "Please enter at least one value")]
public int[] audites { get; set; }

但它的编译器不同意,所以如何将两者结合起来?

提前致谢!

Foolproof.RequiredIfNotAttribute 派生自 Foolproof.ModelAwareValidationAttribute(后者又派生自 System.ComponentModel.DataAnnotation.ValidationAttribute)。 ModelAwareValidationAttribute 标记为 [AttributeUsage(AttributeTargets.Property)]Refer source code。默认情况下,AttributeUsageAllowMultiple 参数是 false,这意味着您只能将属性应用于 属性 一次。您已尝试应用它 3 次,因此出现错误。

拥有它 true 并允许多次应用它可能会导致在设置非侵入式验证使用的 $.validator.methods$.validator.unobtrusive.adapters 函数时出现问题。

您将需要使用一些其他验证属性或创建您自己的 ValidationAtribute 来实现 IClientValidatable,或者依赖服务器端验证。