プロジェクトをMVC2からMVC3にアップグレードしたところ、すべてのカスタムValidationAttributesが壊れました。モデルバインダーフェーズのある時点で、次の例外がスローされます。
Exception Details: System.ArgumentNullException: Value cannot be null.
Parameter name: value
System.ComponentModel.DataAnnotations.ValidationContext.set_DisplayName(String value)
何が変わったのかわかりません...DisplayNameがありません。
どういうわけか変更されたと思われるIsValidオーバーライドが疑われますが、署名は同じです。
public override bool IsValid(object value)
{
....
}
より詳しい情報:
次のように、「AttributeTargets.Class」プロパティに影響を与えるようです。
[AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = true)]
public sealed class MyValidationAttribute : ValidationAttribute {}