25

モデルまたはビューモデルで、MVC (MVVM) でビューモデルを使用する場合、検証はどこに存在する必要がありますか? (または両方、またはどちらでもない)?なぜ?特に、ASP.NET MVC の V2 が近日公開されることを考慮して、これを取り上げます。

複雑な/カスタム検証はどうですか?

4

3 に答える 3

19

ビジネス固有の検証はモデルに含める必要があります。モデルおよび/またはビューモデルの両方で、Web サイト固有の検証を行うことができます。このようにして、ビジネス ロジック (モデル) を別のインターフェイス (Windows、Web フォームなど) の背後に移動でき、検証はそのまま維持されます。

于 2009-08-10T02:10:07.643 に答える
11

すべてのレベルで検証する必要があることが多いと思います:)

私はしばらくの間、次のことを考えていました:

  1. ユーザー入力の検証:どのタイプのモデルでも、間違いなくコントローラー上で。例:キャプチャ
  2. ViewModelで検証された関連データを表示します(ViewModelではなく、ViewModelで)。例:パスワードの確認必要な電子メール
  3. ビジネスルールの検証は間違いなくモデルの検証に入ります。例:必須の電子メール割引クーポンは有効である必要があります
  4. 潜在的なユースケース(ストーリー、シナリオなど)の検証。属性を検証しませんが、プロセス全体の正確さを検証します。モデルの検証に進む必要があります(または別のレイヤーで行う方がよい)。例:指定された期間に注文がない場合、1週間に無料で入手できるアイテムは3つだけです。

注:必要なメールアドレスは、所属する場所によって異なることが多いため、2と3の両方に含めました。
電子メールが有益な役割を果たすだけの場合、検証を緩和してビューモデルにプッシュすることができます。電子メールがアプリケーションの強力な要件である場合、それは間違いなくモデルの検証です。

4つ目は、私たちが理解しているように、実際には検証とは何の関係もありません。
しかし、それも適用する必要があります。したがって、その結果をユーザーに表示する必要があります。

基本的に、4種類の検証すべてが同じインフラストラクチャを使用できます。しかし、実装は異なります:)...

乾杯、
ドミトリ。

于 2009-08-10T05:00:18.843 に答える
5

モデル。検証はビジネス層にある必要があります。ビューモデルは、ビューのセットアップを取得するためだけのものでなければなりません。

于 2009-08-10T02:46:59.613 に答える