Как я могу преобразовать исключения бизнес-уровня в ошибки проверки в SL4? - PullRequest
0 голосов
/ 01 июля 2010

Я довольно новичок в Silverlight и RIA.Однако мы разрабатываем приложение с внешним интерфейсом SL, используя WCF / RIA для подключения к нашему уровню обслуживания.Мы используем шаблон mvvm, так что это тоже может сыграть.

У меня есть конкретная форма данных, в которой я использую команду для перехвата события EditEnding формы данных.В EditEnding я вызываю мой Сервис, чтобы сохранить отредактированный объект.Служба выполняет некоторую интенсивную проверку объекта и в настоящее время генерирует исключения, которые я перехватываю в своей модели представления и отображаю с помощью MessageBox.

Я хочу отображать эти исключения как ошибки проверки, а не отображать их в окне сообщения.Я видел несколько статей, в которых говорится о новом INotifyDataErrorInfo SL4, и, возможно, это решение;но я немного озадачен тем, как это реализовано на самом деле.Другое дело, что у меня складывается впечатление, что INotifyDataErrorInfo используется для «немедленной» проверки свойства (одного свойства за раз), а не для проверки всего объекта на уровне службы, когда пользователь нажимает кнопку «Отправить»..

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

Может кто-нибудь пролить свет на то, как я могу это сделать?

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 16 октября 2010

с ошибками INotifyDataerrors отображаются на экране, КОГДА ВЫ ХОТИТЕ.Это происходит, как только ваша модель Vie генерирует событие для уведомления интерфейса о том, что обнаружены новые ошибки.

Неудачные службы Rias реализуют для вас INotifyDataErrors и используют только ошибки, возникающие из аннотаций данных.Таким образом, если вы хотите использовать сервисы Ria, вам нужно написать собственные аннотации данных для оценки всех ошибок.Есть также аннотации данных на уровне класса.Вы можете проверить что угодно с аннотациями данных.Более того, если вы не дадите расширение .share.cs для этих аннотаций данных, они будут использоваться только на стороне сервера, а не на клиенте ... Для получения дополнительной информации, пожалуйста, прочитайте серию постов аннотаций данных на моемблог здесь .Если вы хотите использовать исключение, пожалуйста, используйте мой инструментарий валидации для WPF и silverlight вместо службы Ria.Он доступен бесплатно на codeplex здесь .

0 голосов
/ 01 июля 2010

Больше не видя, как ваша команда viewmodel взаимодействует с вашим бизнес-объектом и как вы хотите отображать ошибки, вот мое предложение ...

Если вы хотите отобразить правильно сформированный набор ошибок в представлении, когда вы улавливаете ошибки проверки из метода execute команды, добавьте их в наблюдаемую коллекцию, которую вы можете привязать к представлению. Это может быть просто список, связанный с коллекцией, и при попытке сохранить в следующий раз вы можете очистить коллекцию.

Что касается INotifyDataErrorInfo, то он действительно предназначен для простых проверок и для быстрых ответов, поскольку он будет вызываться пользовательским интерфейсом каждый раз, когда изменяется связанное свойство, поэтому он не является хорошим местом для вызова службы по сети.

HTH

...