自定义验证属性有多个实例问题

时间:2010-07-29 13:20:57

标签: c# asp.net-mvc-2 attributes data-annotations fluentvalidation

我在C#4中使用tha命名空间System.ComponentModel.DataAnnotations来实现我自己的验证属性,它看起来像这样

[AttributeUsage(AttributeTargets.Class, AllowMultiple = true)]
public sealed class MyCustomValidator : ValidationAttribute {
    private String Property1 { get; set; }
    private String Property2 { get; set; }

    public ValeTaxiSituacaoRequired(String property1, String property2) {
        Property1 = property1;
        Property2 = property2;
    }

    public override bool IsValid(object value) {
        //validation logic
    }

}

我想使用下面的这个属性

[MyCustomValidator("Name", "Job")]
[MyCustomValidator("Name", "Email")]
[MyCustomValidator("Name", "Job")]
public class Employe {
}

问题是只进行了一次验证。如何执行所有验证(使用asp.net mvc 2)?

3 个答案:

答案 0 :(得分:15)

答案 1 :(得分:3)

如果你想在你自己的属性上实现AllowMultiple = true,那么首先覆盖TypeID,然后为JQuery的解决方案查看关于代码项目的文章here

答案 2 :(得分:0)

看看FluentValidation。它允许您将验证与要验证的类分开,以便您可以随时在服务器或客户端上调用验证逻辑。

它允许您为类添加任意数量的复杂规则,而不会使用属性将其混乱。