私は新しいプロジェクトのためにasp.netMVCプロジェクト構造を調査していて、何かが私を混乱させているという質問があります。モデルとビューモデルの違いは何ですか?ビューモデルはフォームプロパティのモデルを含むと言って正しいでしょうか?
4 に答える
最新の投稿、最新のコメント、投稿カテゴリのリストを 1 つのビューに表示したいブログがあります。どうすればそれができますか?ビューをモデルのいずれかに強く型付けできますか? ビューモデルがあります。
BlogViewModel
最新の投稿、最新のコメント、その他のものをプロパティとして含むビューモデルを作成し、ビューをこのモデルにバインドします。、.. はドメイン モデルですが、posts
はビュー用に特別に作成したビュー モデルです。comments
BlogViewModel
明日、私のブログをモバイル バージョンで表示します。そのときは、より少ないプロパティしか含まない単純なビュー モデルを作成するかもしれません。最後に..ビューモデルはビュー用であり、ほとんどの場合、実際のドメインモデルのラッパーとして機能します!
モデルは通常、データの保存方法(データベース、サービスなど)とより密接に関連しており、モデルはそれらに非常に似ています。
一方、ViewModelは、データがユーザーにどのように表示されるかと密接に関連しています。これは通常、モデルのフラット化バージョン、非正規化などです。複数のモデルの集合体である可能性があります。
一般的なPerson
オブジェクトの場合、モデルには次のようなプロパティが含まれている可能性があります。
- ファーストネーム
- 苗字
- 生年月日
ただし、ViewModelでは、別の方法で表現し、次のようなものを選択できます。
- フルネーム
- 年
ViewModel
特定のビューに調整されたビジネス ドメイン レイヤーからのモデルのバージョンです。
ビューに関連するプロパティのみを持ち、メソッドを持つべきではありません (のような単純なものを除くToString()
)。
ViewModel
「データコンテナ」のみです。
モデルは、アプリケーション内のオブジェクトの単なる表現です。ただし、注意が必要なモデルの種類がいくつかあります。
ドメイン モデル: これは、ORM (Linq2SQL、EF) を使用している場合の SQL テーブルなど、アプリケーション内のドメイン オブジェクトを表します。
モデルの表示: これは、エンド ユーザーに表示/編集/などしてもらいたいオブジェクトを表します。ビュー モデルには、複数のドメイン モデルからのプロパティが含まれるか、まったく含まれない可能性があり、通常、エンド ユーザーがいじってはならないプロパティは除外されます。ビュー モデルには、特定の要求に対してエンド ユーザーに適切なデータを表示するために必要な要素のみを含める必要があります。
View Models とその使用法について、Jimmy Bogardが説明しています。