1
У меня есть этот код в моем классе:Multiple DataAnnotation не работает
[Required(
ErrorMessageResourceType = typeof (Resources),
ErrorMessageResourceName = "VALIDATION_ERROR_ISO"
)]
[StringLength(3,
ErrorMessageResourceType = typeof (Resources),
ErrorMessageResourceName = "VALIDATION_ERROR_STRING_LENGTH_3"
)]
public virtual string ISO
{
get { return iso; }
set
{
iso = value;
OnPropertyChanged("ISO");
}
}
и этот метод для проверки:
public bool IsValid
{
get
{
var validationContext = new ValidationContext(this, null, null);
return Validator.TryValidateObject(this, validationContext, validationResults);
}
}
В моем единичном-тест:
var testLanguage = new Language(){ISO = "More than 3 characters"};
Assert.IsTrue(!testLanguage.IsValid);
Это действительно. Если свойство ISO имеет значение null, оно недействительно из-за требуемого атрибута. Кажется, что мой IsValid не проверяет атрибут Stringlength (3)?
Я использую Visual Studio 2010
Спасибо заранее
Edit:
Я нашел мою ошибку:
return Validator.TryValidateObject(this, validationContext, validationResults);
нужна истина, флаг, чтобы проверить все свойства. Теперь он работает с:
return Validator.TryValidateObject(this, validationContext, validationResults, true);
Это не работает для меня ... – GrayFox
Создать образец MVC приложения и связать ISO с текстовым полем и мой код будет работать. Я тестировал свою среду. Если я поставлю Required до StringLength, то проверка StringLength не срабатывает, а противоположная работает. –