Я пытаюсь использовать проверку атрибута DataAnnotation вне приложения ASP. net MVC. В идеале я хотел бы взять любой класс модели в своем консольном приложении и украсить его следующим образом:
private class MyExample
{
[Required]
public string RequiredFieldTest { get; set; }
[StringLength(100)]
public int StringLengthFieldTest { get; set; }
[Range(1, 100)]
public int RangeFieldTest { get; set; }
[DataType(DataType.Text)]
public object DataTypeFieldTest { get; set; }
[MaxLength(10)]
public string MaxLengthFieldTest { get; set; }
}
Затем (псевдо) сделать что-то вроде этого:
var item = new MyExample(); // not setting any properties, should fail validation
var isValid = item.Validate();
Я нашел это код в примере онлайн:
var item = new MyExample(); // not setting any properties, should fail validation
var context = new ValidationContext(item, serviceProvider: null, items: null);
var errorResults = new List<ValidationResult>();
// carry out validation.
var isValid = Validator.TryValidateObject(item, context, errorResults);
// isValid will be FALSE
Что дает мне "isValid = false", НО только кажется, что он поддерживает поле Required
и игнорирует остальные.
Следующий код возвращает isValid = true
когда я ожидаю, что он вернет false
:
var item = new MyExample() {
RequiredFieldTest = "example text"
};
var context = new ValidationContext(item, serviceProvider: null, items: null);
var errorResults = new List<ValidationResult>();
// carry out validation.
var isValid = Validator.TryValidateObject(item, context, errorResults);
// isValid will be TRUE - not expected behavior
Таким образом, все другие попытки проверки с использованием атрибутов (длина строки, диапазон, максимальная длина, тип данных и т. Д. c) все проходят как допустимые.
Кто-нибудь видел такое поведение раньше или знает, почему оно происходит?