1

私は ViewModel をより深く理解しようとしており、MVC の ViewModel に関する多くの記事やブログを読みました。一部の記事では、ViewModel から Model を参照してはならないと言われていますが、他の記事では、モデルを viewmodel のメンバーとして使用することが推奨されています。

モデルに基づいて ViewModel を作成する必要がある例を見てみましょう。これは次の 2 つの方法で行うことができます。

1

 public class Car
{
       public int Year {get;set;}
       public string  Make {get;set;}
       //more properties......
}

public class CarViewModel
{
  public CarViewModel(Car model)
  {
    Model = model;
  }

  public Car Model { get; set; }
 //additional view model specific properties
}

または2。

public class Car
{
       public int Year {get;set;}
       public string  Make {get;set;}
       //more Car properties......
}

public class CarViewModel
{
       public int Year {get;set;}
       public string  Make {get;set;}
       //more Car properties......

     //additional view model specific properties
}

ViewModel を作成する正しい方法はどれか疑問に思っています。または、これを完全に行う他の方法はありますか?

4

1 に答える 1

2

Carモデルがデータ永続的で、Entity Framework によって作成されたクラスであると言う場合、2 番目のアプローチを使用します。この場合、これらのモデルがコントローラーとビューに浮かんでいるのは望ましくありません。あなたが行ったことと同等のビューモデルを作成しAutoMapper、プロパティをマップするようなツールを使用します。

最初のアプローチでは、ビュー モデルがラッパーとして機能します。これは、そのモデルに関連付けられたビューに追加情報を表示したい場合に使用できます。いくつかの UI フィールドを追加する必要があり、Car モデルでは絶対にそれを行うべきではなく、Carモデルと追加の UI フィールドをラップするビュー モデルを作成する必要があるとします。

基本的にビューモデルは、ビジネスモデルをUIのものからきれいに保つのに役立ち、ビューやコントローラーにデータベースのものがあるモデルを避けるのに役立ちます. したがって、シナリオに応じて 2 つのアプローチを使用できます。

これがあなたの質問に答えることを願っています。

于 2012-06-15T02:28:00.413 に答える