Линк к аннотациям Data Entity Model не сбрасывается - PullRequest
1 голос
/ 15 февраля 2010

В моем приложении 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. Validator V устанавливает сообщение об ошибке в IsValid.

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

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

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

1 Ответ

1 голос
/ 15 февраля 2010

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

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