Проблемы с валидацией - PullRequest
0 голосов
/ 27 января 2011

Привет,

У меня проблемы с проверкой.В другой модели он отлично работает при вызове следующего метода расширения:

public static bool IsValid(this Entity entity, bool validate = false)
{
    List<ValidationResult> result = entity.IsValid();
    return (result.Count == 0);
}
public static List<ValidationResult> IsValid(this Entity entity)
{
    var validationResult = new List<ValidationResult>();
    if (entity != null)
    {
        validationResult = entity.ValidateEntity();
        Validator.TryValidateObject(entity, new ValidationContext(entity, null, null), validationResult, true);
    }
    return validationResult;
}
private static List<ValidationResult> ValidateEntity(this Entity entity, int depth = 0)
{
    var validationResult = new List<ValidationResult>();
    if (entity != null && depth < 4)
    {
        foreach (var propertyInfo in entity.GetType().GetProperties())
        {
            if (propertyInfo.PropertyType.BaseType == typeof(Entity))
            {
                var value = propertyInfo.GetValue(entity, null) as Entity;
                if (value != null)
                {
                    Validator.TryValidateObject(value, new ValidationContext(value, null, null), validationResult, true);       
                    var result = value.ValidateEntity(++depth);
             if (result.Count > 0)
                    {        
                        validationResult.AddRange(result);
                    }
                }
            }
        }
    }
    return validationResult;
}

Однако, когда я использую это в другой модели, которая имеет примерно одинаковую структуру, он возвращает список ошибок, когдасвойство пустое, но оно не предоставляет моему текстовому полю красную рамку, включая сообщение об ошибке.

Часть модели, которая не работает:

[Display(Name = "Reden")]
[Required(ErrorMessage = "Reden is een verplicht veld")]
[StringLength(50, ErrorMessage = "Het veld mag maximaal 50 karakters bevatten")]
public string Reason { get; set; }

Чего мне не хватает, чтобы сделать этоработать правильно?

[править]

[xaml]

<TextBox Grid.Row="2" Grid.Column="1" Text="{Binding SelectedNoFacility.Reason, Mode=TwoWay}" Margin="5" Grid.ColumnSpan="4" />

[/ xaml]

[/ edit]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...