1

我将我的项目从 MVC2 升级到 MVC3 并且所有自定义 ValidationAttributes 都坏了。在模型绑定阶段的某个时刻,它会引发以下异常:

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 {}
4

1 回答 1

0

解决方案是将 AttributeTargets.Class 更改为 AttributeTargets.Property 并重写每个验证器以使用给定的属性。

于 2011-01-31T21:57:58.960 回答