1

Dans mon application Asp.net MVC, j'ai une classe Validator personnalisée V et une (entités ADO.NET) modèle entité E.Linq aux DataAnnotations de l'entité modèle, ne pas réinitialiser

class V : ValidationAttribute 
{  
    public override bool IsValid(object value) 
    { 
     ...   
     if (hasErrors) 
      ErrorMessage = errorMsg; 
     ...   
    }  
} 
public partial class E //the entity model 
{  
    [V] 
    public object A {get;set;}  
} 

I appliqué validateur V à une propriété personnalisée P dans le modèle d'entité E. Le validateur V définit le message d'erreur dans IsValid. Cependant, il semble qu'une instance du modèle d'entité E continue à être réutilisée encore et encore (à partir d'une vue MVC Asp.net) et chaque fois que la validation est effectuée sur E, la même instance de validateur est utilisée. Étant donné que le validateur écrit dans la propriété ErrorMessage et que vous ne pouvez pas écrire plusieurs fois sur la propriété ErrorMessage, chaque validation effectuée après la validation initiale provoque un blocage.

Est-ce que quelqu'un sait comment résoudre ce problème?

+0

S'il vous plaît signaler le message d'exception votre obtenir. – jfar

Répondre

1

Essayez de donner à votre validateur le AttributeUsageAttribute et de définir la propriété AllowMultiple sur true.

[AttributeUsageAttribute(AttributeTargets.Property, AllowMultiple = true)] 
class V : ValidationAttribute {  
    public override bool IsValid(object value) { 
     //...   
     if (hasErrors) 
      ErrorMessage = errorMsg; 
     //...   
    }  
} 
Questions connexes