在同一领域的万无一失的验证器

时间:2015-02-13 16:25:52

标签: asp.net asp.net-mvc asp.net-mvc-4 foolproof-validation

我目前使用万无一失的验证:

[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; }

但是编译器不同意这一点,那么如何将两者结合起来呢?

提前致谢!

1 个答案:

答案 0 :(得分:2)

Foolproof.RequiredIfNotAttribute派生自Foolproof.ModelAwareValidationAttribute(后者又来自System.ComponentModel.DataAnnotation.ValidationAttribute)。 ModelAwareValidationAttribute标有[AttributeUsage(AttributeTargets.Property)]Refer source code。默认情况下,AllowMultiple的{​​{1}}参数为AttributeUsage,这意味着您只能将属性应用于属性一次。您已尝试将其应用3次,因此出错。

拥有false并允许多次应用可能会导致设置由不引人注意的验证使用的true$.validator.methods函数时出现问题。

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