質問

最近、基礎となるモデルが複雑な場合に、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 を渡すだけです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top