1

プロジェクトを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 {}
4

1 に答える 1

0

解決策は、AttributeTargets.ClassをAttributeTargets.Propertyに変更し、特定のプロパティで機能するように各バリデーターを書き直すことでした。

于 2011-01-31T21:57:58.960 に答える