Domanda

ho aggiornato il mio progetto dal MVC2 a MVC3 e tutti ValidationAttributes personalizzati rotto. Ad un certo punto nella fase modello di legante, viene generata questa eccezione:

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

Non riesco a capire cosa cambia ... non c'è DisplayName ..

ho il sospetto l'override IsValid, che presumibilmente ha cambiato in qualche modo, ma la firma è la stessa.

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

Più informazioni:

Essa colpisce apparentemente proprietà "AttributeTargets.Class", come in:

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

Soluzione

La soluzione era quella di cambiare AttributeTargets.Class a AttributeTargets.Property e di riscrivere ogni validatore di lavorare con una determinata proprietà.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top