1

我将项目从MVC2升级到MVC3,并且所有自定义ValidationAttributes都打破了。在模型中的粘结相的某个时刻,它抛出此异常:MVC3 ValidationAttribute break

Exception Details: System.ArgumentNullException: Value cannot be null. 
Parameter name: value 
System.ComponentModel.DataAnnotations.ValidationContext.set_DisplayName(String value) 

我无法弄清楚什么样的变化......没有显示名称..

我怀疑IsValid的覆盖,这理应以某种方式改变,但签名是相同的。

public override bool IsValid(object value) 
{ 
    .... 
} 

更多信息:

它显然影响 “AttributeTargets.Class” 属性,如:

[AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = true)] 
public sealed class MyValidationAttribute : ValidationAttribute {} 

回答

0

的解决方案是改变AttributeTargets.Class到AttributeTargets.Property和重写每个验证程序与给定的属性一起工作。