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

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

[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 { } 

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

你必须覆盖TypeId属性http://www.paraesthesia.com/archive/2010/03/02/the-importance-of-typeid-in-asp.net-mvc-dataannotations-validation-attributes.aspx

如果你想在你自己的属性上实现AllowMultiple = true,那么首先覆盖TypeID,接下来解决JQuery的解决方案请看这里关于代码项目的文章

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

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