[英]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.