относящиеся к этому questionПользовательские DataTypeAttribute проверка не вызывая правильно
Я создал свой собственный DateValidationAttibute, чтобы убедиться, что строка в формате корректную дату (например, MM/DD/YYYY)
[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = false)]
public class DateValidationAttribute : DataTypeAttribute
{
public DateValidationAttribute() : base(DataType.Date){}
//MM/DD/YYYY, MM-DD-YYYY
public override bool IsValid(object value)
{
//validation logic
}
}
Я пытаюсь проверить этот атрибут с помощью этого кода.
[Test]
public void Test()
{
var invalidObject = new TestValidation {DateField = "bah"};
var validationContext = new ValidationContext(invalidObject, null, null);
var validationResults = new System.Collections.Generic.List<ValidationResult>();
bool result = Validator.TryValidateObject(invalidObject, validationContext, validationResults);
Assert.IsFalse(result);
Assert.AreEqual(1, validationResults.Count);
}
private class TestValidation
{
[DateValidation(ErrorMessage = "Invalid Date!")]
public string DateField { get; set; }
}
К сожалению, это не работает. Я поставил точку останова в конструкторе DateValidationAttribute и методе IsValid. Он определенно попадает в конструктор, но никогда не удаляет метод IsValid. Есть идеи?
Изменение моего примера на расширение от ValidationAttribute не помогает. Имейте в виду, что DataTypeAttribute уже распространяется на ValidationAttribute. – manu08