Сначала проверьте,
var validation = new List<ValidationResult>();
bool valid = Validator.TryValidateObject(value, new ValidationContext(value, null, null), validation, validateAllProperties: true);
Затем скопируйте результаты в ModelState:
foreach (var item in validation) {
IList<string> memberNames = item.MemberNames.ToArray();
if (memberNames.Count > 0) {
for (int i = 0; i < memberNames.Count; i++)
controller.ModelState.AddModelError(memberNames[i] ?? "", item.ErrorMessage);
} else {
controller.ModelState.AddModelError("", item.ErrorMessage);
}
}