2010-07-01 3 views
0

저는 Silverlight 및 RIA를 처음 사용합니다. 그러나 WCF/RIA를 사용하여 SL 프론트 엔드로 서비스를 연결하는 앱을 개발 중입니다. 우리는 mvvm 패턴을 사용하므로이 패턴도 재생할 수 있습니다.비즈니스 계층 예외를 SL4의 유효성 검증 오류로 변환하려면 어떻게해야합니까?

나는 데이터 형식의 EditEnding 이벤트를 연결하기 위해 명령을 사용하는 특정 데이터 형식을 사용합니다. EditEnding에서 편집 된 객체를 저장하기 위해 내 서비스에 전화합니다. 이 서비스는 객체에 대한 강력한 유효성 검사를 수행하고 현재 내 viewmodel에 트랩하고 MessageBox로 표시하는 예외를 throw합니다.

나는 메시지 상자로 표시하는 대신 유효성 검사 오류로 예외를 표시하려고합니다. SL4의 새로운 INotifyDataErrorInfo에 대해 이야기하고있는 몇 가지 기사를 보았습니다. 아마도 해결책 일 것입니다. 하지만 실제로 구현 된 방법에 대해서는 다소 혼란 스럽습니다. 다른 하나는 INotifyDataErrorInfo를 사용하여 사용자가 제출 단추를 누를 때 서비스 계층에서 전체 개체의 유효성을 검사하도록 허용하는 것과 달리 (즉, 한 번에 하나의 속성에 대해) "즉시"속성 유효성 검사를 수행한다는 인상을받습니다. .

나는 사용자와 높은 대기 시간 문제로 인해 하나의 요구 사항은 너무 애매한 앱이 아니라는 것입니다. 따라서 클라이언트가 데이터 폼에서 편집중인 각 속성에 대한 서비스 호출을 원하지 않습니다.

누구든지이 작업을 수행 할 수있는 방법을 밝힐 수 있습니까?

미리 감사드립니다. 당신의 ViewModel 명령이 비즈니스 오브젝트 및 방법은 다음 오류를 표시 할이 내 제안입니다 상호 작용하는 방법을 더 보지 않고

답변

0

...

당신이보기에 오류가 잘 형성된 집합을 표시하려면 execute 메쏘드에서 유효성 검사 에러를 잡았을 때 뷰에 바인딩 할 수있는 observable 컬렉션에 그것들을 추가하십시오. 이것은 단순히 컬렉션에 바인딩 된 목록 상자 일 수 있으며 다음 번에 컬렉션을 지울 수있게하려고하면 저장할 수 있습니다.

INotifyDataErrorInfo는 바인딩 된 속성이 변경 될 때마다 UI에 의해 호출되므로 네트워크를 통해 서비스를 호출하기에 좋은 장소가 아니기 때문에 간단한 검증과 빠른 응답을위한 것입니다. 당신이 원할 때

HTH는 INotifyDataerrors 오류가있는

+0

답장을 보내 주셔서 감사합니다. 이미 dataform ...에 표시되는 유효성 검사 오류에 이러한 예외를 추가하는 방법이 있습니까? validationerrors 목록? – RHarris

0

가 화면에 표시됩니다. Vie Model이 새로운 오류가 발견되었다는 것을 인터페이스에 알리기위한 이벤트를 발생 시키 자마자 바로 그 것입니다.

Unluckly 리ias 서비스가 INotifyDataErrors를 구현하고 데이터 주석에서 오는 오류 만 사용합니다. 따라서 Ria 서비스를 사용하려면 사용자 정의 데이터 주석을 작성하여 모든 오류를 평가해야합니다. 또한 클래스 수준에서 데이터 주석이 있습니다. 데이터 주석을 사용하여 anyrthing을 검증 할 수 있습니다. 또한,이 데이터 주석에 .share.cs 확장자를 지정하지 않으면 클라이언트 측이 아니라 서버 측에서만 사용하게됩니다. 더 많은 정보를 원하시면 pls가 다음에서 데이터 주석 시리즈를 읽습니다. 내 블로그 here. 예외 pl을 사용하려면 Ria 서비스 대신 WPF 및 Silverlight 용 유효성 검사 도구 키트를 사용하십시오. 코드 플렉스 here에 무료로 제공됩니다.