在我的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属性,所以在初始验证之后执行的每个验证都会导致崩溃。
有谁知道如何解决这个问题?
答案 0 :(得分:1)
尝试为验证者提供AttributeUsageAttribute并将AllowMultiple属性设置为true。
[AttributeUsageAttribute(AttributeTargets.Property, AllowMultiple = true)]
class V : ValidationAttribute {
public override bool IsValid(object value) {
//...
if (hasErrors)
ErrorMessage = errorMsg;
//...
}
}