有没有一种方法可以基于短数据注释进行模型验证?

时间:2019-01-15 10:29:37

标签: asp.net-mvc asp.net-mvc-5 data-annotations

有没有办法告诉ASP.NET MVC:

  1. 不是如果某个验证属性失败,是否继续验证其余验证属性?

  2. 然后,继续进行其余的验证属性,而不管特定的验证属性是否失败?无论如何,这似乎是默认行为。

例如

[MaxLength(200)] // don't go ahead with the next 
                 // validation attribute applied, i.e. the
                 // RegularExpressionAttribute below if this one 
                 // fails, since there really would be no point in 
                 // doing that.
[RegularExpression(...)]
public string MyProperty { get; set; }

然后有时也以另一种方式进行配置,即不知道是短路,这似乎是当前的默认行为,例如:

[MaxLength(200)]  // sure, go ahead with the next one 
                  // even if this one fails
[RegularExpression(...)]
public string MyProperty { get; set; }

基本上,我的问题与this unanswered question几乎相同。

我正在使用针对.NET Framework 4.5.2。的ASP.NET MVC 5.2.7。

1 个答案:

答案 0 :(得分:0)

简而言之,我不相信MVC通过提供的数据注释提供此功能。

您应该问自己为什么要遵循建议的方法。由MVC数据批注执行的验证类型在计算上很简单,在首次失败时存在是没有意义的。如果您的注释正在修饰视图模型,则几乎可以肯定,用户将更喜欢看到所有失败的内容,因此他们可以一次性纠正所有错误。重新提交表单以仅找到后续字段而未通过验证将是一场噩梦。