繁体   English   中英

Linq to Entity Model的DataAnnotations不重置

[英]Linq to Entity Model's DataAnnotations don't reset

在我的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。验证器V在IsValid中设置错误消息。

但是,似乎实体模型E的实例不断(从Asp.net MVC视图)一次又一次地被重用,并且每次在E上执行验证时,都会使用同一验证器实例。

由于验证器写入ErrorMessage属性,并且您不能多次写入ErrorMessage属性,因此在初始验证之后执行的每个验证都会导致崩溃。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM