2010-12-20 12 views
0

サーバー側からの検証エラーとワーニングの両方をSilverlightに戻す必要があるビジネスケースがあります。 SilverlightがSystem.ComponentModel.DataAnnotations.ValidationResultを使用してエラーを処理しています。それは含まれていませんし、 "警告"のフィールド。サーバー側からシルバーライトへの警告の返信方法

誰かがこの問題を処理する良いアイデアを持っているのだろうかと思います。ありがとう。

答えて

0

ValidationResultは、ValidationAttributeのサブクラスによってスローされるValidationExceptionによって使用されると思います。例外を投げるとコードの実行が停止するため、通常、このメカニズムはブロッキング検証エラーと共に使用されます。サービスで発生した場合、例外はクライアントに送信され、処理されますが、これは常に望ましいシナリオではありません。

警告フラグを追加するために、これらのクラス(ValidationAttributeクラス、そのサブクラス、ValidationExceptionはシールされていません)を拡張することができますが、警告の場合は処理を続行して再スローする必要があります。

もう1つの方法は、ビジネスロジック検証エラーと警告をクライアントへの応答に追加することです。私はこのアプローチが好きです。なぜなら、あなたが望む/必要とするような情報を含めることができるからです。

+0

ありがとうございました。私の解決策は、サーバーからエラーを受け取り、context.ValidationResultsに追加して、ValidationSumarryがそれらを取得して表示できるようにすることです。しかし、ValidationResultsはエラーのためだけであり、警告の余地はありません。私はMSのクラスを継承し、フィールドを追加すべきだと思いますか?それは良い解決策ですか?それとももっと良いことがありますか?私はいくつかの技術的理由で検証エラーを返すことができませんでした... – Frank

+0

残念なことに、ValidationResultは封印されています。エラーと警告を同時に表示しない場合は、ViewModelにフラグを設定して、エラーまたは警告があるかどうかを示し、それに応じてValidationSummaryのスタイルを設定できます。私は何かを見つけたら、より良い解決策を探してポストバックします。 – sowee15

+0

INotifyDataErrorInfo(http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifydataerrorinfo(v=vs.95).aspx)のドキュメントの注釈を確認してください。これは良い開始点だと思いますあなたのViewModelのエラーをカスタマイズします。ただし、この場合、ValidationContextにエラーを追加するのではなく、新しいエラーが利用可能であることをUIに通知するために、ViewModelのインタフェースを実装します。 – sowee15

関連する問題