Вам нужно использовать пользовательский атрибут проверки и украшать его моделью, а не отдельными свойствами:
[AttributeUsageAttribute(AttributeTargets.Class, AllowMultiple = true, Inherited = false)]
public class MyCustomValidatorAttribute : ValidationAttribute
{
public override bool IsValid(object value)
{
// value here will be the model instance you could cast
// and validate properties
return true;
}
}
, а затем украсьте им свою модель:
[MyCustomValidator]
public class MyViewModel
{
public string Prop1 { get; set; }
public string Prop2 { get; set; }
}
В качестве альтернативы аннотациям данных для проверки я бы настоятельно рекомендовал вам FluentValidation.NET . Он также имеет отличную интеграцию с ASP.NET MVC .