2011-10-28 15 views
1

私は、ここの人々がこれを正しく行う方法についていくつか考えてくれることを願っています。FluentValidationを使用しているときのViewModelへのドメインモデル検証エラーのマッピング

現在、私は自分の画面をレンダリングするために使用するViewModelを持っています。 Viewモデルには、実際にはいくつかのドメインモデルのフラット化されたデータが含まれています。基本的な検証を行うための属性を持つViewModelを装飾しましたが、実際の検証作業はサービスレイヤーで行われます。この問題は、サービスレイヤで検証エラーが発生した場合に発生します。プロパティの名前(つまり、UserName)がModelStateのエントリと一致しません(つまり、RegistrationViewModel.UserName)。

これを処理する方法についてのお勧めはありますか?

ありがとうございます!

スティーブン

答えて

1

かもしれないあなたの質問への答えが、これは、私は通常、このアプローチ方法です:私は、任意の検証フレームワークを使用していないドメインモデルでは

を、と私はそれを使用しないでくださいユーザーフレンドリなエラーメッセージを表示します。私はモデルが有効な状態にあることを常に確認します。私は、無効な値が設定されているときに例外をスローします(プロパティーセッターで)。私は、ドメインオブジェクトのコンストラクタを使用して、デフォルト値とコンストラクタパラメータを使用して、インスタンス化されたときに常に有効な状態にします。実際のシンプルだがパワフルなモデルは、常にあなたのモデルが有効な状態にあることを確かめることができるからです。ドメインオブジェクトを確実にユニットテストする必要があります。このアプローチは、ormの場合でもうまくいきます。

私は、ユーザーフレンドリーなメッセージを与えるために、ビューモデルで流暢な検証を使用します。

+3

このアプローチの問題は、ビジネス検証ロジック(複雑なルールと単純なフィールドが必要なタイプ)をUIに持ち歩いているだけなので、より良いメッセージを得ることができます。私はそれが良いアプローチだとは思わない。 – Steven

0

これは最大の解決策ではありませんが、最終的には基本的なフィールド検証を表示するために基本的なクライアント側の検証に頼っています。それは過去の検証であり、検証サマリー。

関連する問題