MVCアプリケーションには、ドメインモデルが定義されており、各モデルは独自のビジネスルールチェックを実行します。MVCアプリケーションでは、ビジネス・モデルの検証をビュー・モデルおよび/またはコントローラに複製する必要がありますか?
私の質問は、ビジネス・ルールもビュー・モデルまたはコントローラでレプリケートする必要がありますか、またはモデルで検証エラーを生成するだけでよいのでしょうか。
私たちが話しているバリデーションはクライアント側ではできないと仮定し、ビューモデルのプロパティにバリデーション属性を追加することで行うことができる単純なフィールド検証よりも複雑です。
モデルがすべての検証を処理できるようにすることの問題は、生成するエラーメッセージが、その結合された特定のビューには適していない可能性があります。たとえば、フィールド名が正しくない可能性があります。また、ドメインモデルのプロパティ名ではなく、ビューモデルプロパティ名を使用してModelStateにエラーを追加する必要があります。
のviewmodel /コントローラに同じビジネス・ルールの検証を追加することに伴う問題は、明らかな重複メンテナンスの問題であり、それは私のドメインモデルでの検証が本当に親切のそれは少し無意味になり、エラーを生成してはならないことを意味します。
どのように人々は通常これを処理するのですか?
ありがとうございます。Rob、Validation.IsValidEmailコードはドメインモデルの一部であり、ドメインモデルとコントローラの両方から呼び出すことができますか? –
ええ - でも、あなたの現在のプロジェクトドメインだけに限定される必要はありません - これらのタイプのライブラリの多くは、コードを強固に結合することなくあなたの人生を簡単にする巧妙な方法特定のプロジェクト(可能な場合)。通常、初期設定は長くなりますが、投資収益率は通常高いです。 – Rob