Linq to Entity Model的DataAnnotations不会重置

时间:2010-02-15 04:18:18

标签: c# asp.net-mvc validation data-annotations ado.net-entity-data-model

在我的Asp.net MVC应用程序中,我有一个自定义验证器类V和一个(ADO.NET实体)实体模型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应用于实体模型E中的自定义属性P. Validator V在IsValid中设置错误消息。

然而,似乎实体模型E的实例不断被重复使用(来自Asp.net MVC视图),并且每次在E上执行验证时都会使用相同的验证器实例。

因为验证器写入ErrorMessage属性而您不能多次写入ErrorMessage属性,所以在初始验证之后执行的每个验证都会导致崩溃。

有谁知道如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

尝试为验证者提供AttributeUsageAttribute并将AllowMultiple属性设置为true。

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