4

私はasp.netmvc、nhibernate、およびdddの概念を使用してWebアプリケーションを開発してきました。

ドメインクラスのFluentValidationを使用して検証を開発しましたが、正常に機能します。さて、今、私はビュー内のエンティティを編集するためにViewModelが必要です、そう、私の質問は、ビューモデルを検証するために別の検証クラスを作成する必要がありますか?または、この状況を回避するにはどうすればよいですか?

DRY(繰り返してはいけない)の概念を壊したくないので、私はそれを尋ねます。

ありがとう!

4

1 に答える 1

6

ドメイン レベルの検証とビュー モデルの検証はまったく異なります (ただし、多くの重複がある可能性があります)。

たとえば、データベースで特定のフィールドを null にすることは完全に許容されますが、特定の Web フォームでは入力が必要です。この場合、モデル検証内で null をチェックします。

複数のクライアント アプリケーションが (WCF などを介して) 同じド​​メイン コントローラーを共有していても、異なるアプリケーション検証ロジックを所有しているのはごく普通のことです。

ビュー モデルで DataAnnotations を使用すると、クライアント側の JavaScript 検証を無料で取得できるため、原則として、1:1 マッピングであっても、常にドメイン オブジェクトとは別の ViewModel を使用します。AutoMapper を使用してそれらの間で翻訳します。クライアント側の検証を取得することに加えて、ドメイン検証内の混乱も軽減します。

于 2011-07-20T15:03:57.513 に答える