Аннотации данных Linq to Entity Model не сбрасываются

В моем приложении Asp.net MVC у меня есть собственный класс валидатора V и модель сущности (ADO.NET Entities) E.

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;}    
}

Я применил валидатор V к пользовательскому свойству P в модели объекта E. Валидатор V устанавливает сообщение об ошибке в IsValid.

Однако кажется, что экземпляр модели объекта E продолжает использоваться повторно снова и снова (из представления Asp.net MVC), и каждый раз, когда проверка выполняется для E, используется один и тот же экземпляр валидатора.

Поскольку валидатор записывает в свойство ErrorMessage, а вы не можете писать в свойство ErrorMessage более одного раза, каждая проверка, выполняемая после первой, вызывает сбой.

Кто-нибудь знает, как это решить?


person jameszhao00    schedule 15.02.2010    source источник
comment
Пожалуйста, опубликуйте сообщение об исключении, которое вы получаете.   -  person John Farrell    schedule 15.02.2010


Ответы (1)


Попробуйте предоставить своему средству проверки AttributeUsageAttribute и установить AllowMultiple в значение true.

[AttributeUsageAttribute(AttributeTargets.Property, AllowMultiple = true)]
class V : ValidationAttribute {    
    public override bool IsValid(object value) {
        //...        
        if (hasErrors)
            ErrorMessage = errorMsg;
        //...        
    }    
}
person Çağdaş Tekin    schedule 15.02.2010