Проверка не запускается (System.ComponentModel.DataAnnotations)

У меня есть этот класс здесь с 2 свойствами Name а также Age

using System.ComponentModel.DataAnnotations;
public class Person
{
    [Required(AllowEmptyStrings = false)]
    [StringLength(25, MinimumLength = 2)]
    [RegularExpression(@"^[a-zA-Z]+$")]
    public string Name { get; set; }
    [Range(0, 100)]
    public int Age { get; set; }
}

и я пытаюсь проверить значения

Person pTemp = new Person();
pTemp.Name = "x"; //invalid because length <2
pTemp.Age = 200; //invalid because > 100
//validation here 
var context = new ValidationContext(pTemp);
var results = new List<ValidationResult>();
var isValid = Validator.TryValidateObject(pTemp, context, results);
results.ForEach(x => Console.WriteLine(x.ErrorMessage));

но единственный проверяющий атрибут, который срабатывает, это [Required]

где моя ошибка?

1 ответ

Решение

Используйте другую перегрузку:

var isValid = Validator.TryValidateObject(pTemp, context, results, true);

Из MSDN:

public static bool TryValidateObject(
   Object instance,
   ValidationContext validationContext,
   ICollection<ValidationResult> validationResults,
   bool validateAllProperties
)

validateAllProperties Тип: System.Boolean Значение true, чтобы проверить все свойства; если ложь, проверяются только обязательные атрибуты..

поскольку bool равно false по умолчанию вы только подтвердили Required свойства.

Другие вопросы по тегам