Принудительная проверка сущности ria в Silverlight 4 - PullRequest
4 голосов
/ 14 июня 2010

У меня есть ситуация, в которой я буду загружать неверные данные.Я использую DataForm для редактирования данных, и мне нужно провести проверку.Пользователь может обычно не редактировать поля, которые являются недействительными, но прежде чем я сохраню сущность обратно, я хотел бы уведомить пользователя о том, что его нужно отредактировать.Но валидация, по-видимому, не срабатывает, если свойство фактически не изменено.Есть ли способ заставить сущность выполнить все правила проверки на стороне клиента?

Держатель Шейна

Ответы [ 2 ]

0 голосов
/ 13 ноября 2012

Я нашел именно эту проблему.В итоге я реализовал INotifyDataErrorInfo в моей модели представления (на самом деле в базовом классе) и проверил контекст проверки следующим образом:

// Clear any validation errors already registered
CurrentUser.ValidationErrors.Clear();

var validationResults = new List<ValidationResult>();
ValidationContext vcontext = new ValidationContext(CurrentUser, null, null);

// Validate the User; the results are added to our list of validationResults
Validator.TryValidateObject(CurrentUser, vcontext, validationResults);

// Add the errors to the entities validation error list
foreach (var res in validationResults)
{
    CurrentUser.ValidationErrors.Add(res);
}

Я не могу вспомнить, как наверху, но если этоне вызывает ValidationStates в вашем представлении (то есть красной рамке в текстовом поле), добавляет ошибки в коллекцию ValidationErrors представления-модели (созданную в реализации INotifyDataErrorInfo).

// Add the errors to the viewmodel's validation error list
foreach (var res in validationResults)
{
    CurrentUser.ValidationErrors.Add(res);
}
0 голосов
/ 07 декабря 2010

Я не знаю, правильно ли я понял, чего вы хотите достичь ...

Если вы добавили пользовательский валидатор на сервер и просто переименовали файл класса в whatever.shared.cs, то shared велит компилятору (?) Добавить этот валидатор для запуска на клиенте ...

Взгляните на это сообщение

надеюсь, что это поможет ...

...