ASP.NET MVC、Model、ViewModelの懸念の分離?
-
05-07-2019 - |
質問
最近、基礎となるモデルが複雑な場合に、ASP.NET MVCアプリケーションのプレゼンテーションレイヤーを整理するための最良の方法を模索しています。これまでに登場したのは、ViewModelオブジェクトを備えたMVVMアーキテクチャです。ただし、この種のアーキテクチャの場合のベストプラクティスはわかりません。
- ViewModelオブジェクトにはModelオブジェクトを含めることができますか?
- MVVMを使用する場合、ビューでModelオブジェクトを使用することをお勧めしますか?
- ViewModelまたはModelクラスで検証を実装する場所
- ビジネスレイヤー(サービスレイヤー)はViewModelを知っている必要があり、ViewModelとModelの間のマッピングを担当するのは誰ですか?
解決
- ほとんどの場合、ModelViewオブジェクトは、複数のタイプを送信する必要がある場合、またはビューでのみ必要ないくつかのプロパティを渡す必要がある場合に、Modelオブジェクトを保持する単なるコンテナです。
- Viewの仕事がモデルの詳細を表示することであり、Viewに渡すものが他にない場合、なぜですか?
- 依存。 ModelViewクラスとModelクラスは、レイヤー間でデータを運ぶためだけに使用できます。また、cutomモデルバインダーまたはサービスレイヤーを使用した検証を行います。
- ModelViewsについて知らない理由はありません。ただし、通常はリクエストされたモデルをコントローラーのサービスレイヤーから取得し、それを直接またはModelViewでビューに渡します。
ところで、ModelViewsをアーキテクチャとは考えません。 「必要なときに使用する」というようなものです。結局のところ、データをビューに渡すためにこれを行う意味はありません:
class SomeModelView {
public MyModel model { get; set; }
}
ビューがジョブを実行するのに十分な場合は、 MyModel
を渡すだけです。
所属していません StackOverflow