2015-10-14 10 views
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); 

ответ

1

Положите его вверх ногами и он будет работать. Попробуйте

[StringLength(3, 
    ErrorMessageResourceType = typeof (Resources), 
    ErrorMessageResourceName = "VALIDATION_ERROR_STRING_LENGTH_3" 
    )] 
[Required(
    ErrorMessageResourceType = typeof (Resources), 
    ErrorMessageResourceName = "VALIDATION_ERROR_ISO" 
    )] 
public virtual string ISO 
{ 
    get { return iso; } 
    set 
    { 
     iso = value; 
     OnPropertyChanged("ISO"); 
    } 
} 
+0

Это не работает для меня ... – GrayFox

+0

Создать образец MVC приложения и связать ISO с текстовым полем и мой код будет работать. Я тестировал свою среду. Если я поставлю Required до StringLength, то проверка StringLength не срабатывает, а противоположная работает. –

Смежные вопросы