9

ASP.NET MVC 3を使用しており、FluentValidationを使用してビューモデルを検証しています。正しい方向に進んでいないのではないかと少し心配しています。私の知る限り、モデルの検証はドメインオブジェクトで実行する必要があります。MVCを使用すると、検証が必要な類似した複数のビューモデルが存在する可能性があります。ドメインオブジェクトのプロパティが複数のビューモデルで発生した場合はどうなりますか?これで、同じプロパティを2回検証しているので、同期していない可能性があります。したがって、Userドメインオブジェクトがある場合は、このオブジェクトの検証を行いたいと思います。UserAViewModelとUserBViewModelがある場合はどうなるので、実行する必要があるのは複数の検証です。

私のニュースクラスには、必須フィールドであるTitleというプロパティがあります。ビューモデルにはTitleプロパティもあり、AutoMapperを使用してNewsとNewsViewModelをマップします。したがって、この検証は2回行われます。ドメインモデルの検証はいつ行われ、ビューモデルの検証はいつ行われますか?

上記のシナリオは単なる例ですので、批判しないでください。

4

2 に答える 2

16

微妙な違いですが、ビュー モデルの検証は正しいユーザー入力を検証し、ドメイン モデルの腐敗防止レイヤーを形成することですが、ドメイン モデルの「検証」はビジネス ルールを適用します。これは完全に正常であり、両方のレイヤーで検証を行う必要があります。実際、UserAViewModel の入力検証が UserBViewModel とはわずかに異なる可能性があります。あなたの質問に関しては、一般的に、ViewModel を介してドメイン オブジェクトを公開することを避け、代わりにそれらの間をマップするようにします (多くの場合、AutoMapper のようなものを使用します)。これにより、ViewModel は、ドメイン モデルのプロパティ バッグではなく、腐敗防止レイヤーになります。それが役立つことを願っています。

于 2010-12-21T13:26:49.607 に答える
1

ドメイン オブジェクトのプロパティが複数のビュー モデルで発生するとどうなりますか?

これは起こるべきではありません。ビュー モデルはドメインから完全に分離する必要があります。

これはあなたの質問に答えていますか?

于 2010-12-21T13:20:37.090 に答える