在同一字段上万无一失的多个验证器
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。默认情况下,AttributeUsage
的 AllowMultiple
参数是 false
,这意味着您只能将属性应用于 属性 一次。您已尝试应用它 3 次,因此出现错误。
拥有它 true
并允许多次应用它可能会导致在设置非侵入式验证使用的 $.validator.methods
和 $.validator.unobtrusive.adapters
函数时出现问题。
您将需要使用一些其他验证属性或创建您自己的 ValidationAtribute
来实现 IClientValidatable
,或者依赖服务器端验证。
我目前使用万无一失的方式进行验证:
[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。默认情况下,AttributeUsage
的 AllowMultiple
参数是 false
,这意味着您只能将属性应用于 属性 一次。您已尝试应用它 3 次,因此出现错误。
拥有它 true
并允许多次应用它可能会导致在设置非侵入式验证使用的 $.validator.methods
和 $.validator.unobtrusive.adapters
函数时出现问题。
您将需要使用一些其他验证属性或创建您自己的 ValidationAtribute
来实现 IClientValidatable
,或者依赖服务器端验证。