0

重複の可能性:
ASP.NETMVCViewModelパターン

ASP.NetMVCは初めてです。asp.net mvcでViewModelの使用法について人々が話しているのを見ましたが、実際には、ViewModelクラスを作成する必要がある理由がわかりません。

誰かがViewModelの実際の使用法に光を当て、ViewModelの簡単なコードで説明するとよいでしょう。ありがとう

4

1 に答える 1

2

ViewModelsは、モデルエンティティが画面に表示したいものと1対1で対応していない場合に最適です。

簡単な例は、人に関する情報を保存するアプリケーションです。ドメインモデルにPersonエンティティとaddressエンティティがあるとします。各人には多くのアドレスがありますが、デフォルトのアドレスは1つです。ビューの1つで、個人の詳細とデフォルトの住所の詳細を表示します。2つのエンティティにビューを入力できないため、モデルに対してビューを強く入力したままにしておきたい場合(そうする必要があります)、それは不可能です。

ここで、viewModelsが最適になります。「person」タイプと「address」タイプの2つのプロパティを持つ新しいviewmodelクラスを作成し、コントローラーでこれらのプロパティに必要な情報を入力し、このPerson+addressモデルクラスに対してビューを入力します。

それらのコードに関しては、他のモデルとまったく同じです。例はまもなく登場します。

ドメインモデル(おそらくデータアクセス層、または別のドメインモデルプロジェクトにあります):

public class Person{
    public int PersonId{get;set;}
    public string Name {get;set;}
    .
    .
    .
}
public class Address{
    public int AddressId{get;set;}
    public string Street1 {get;set;}
    public string Street2 {get;set;}
    .
    .
}

次に、次のようなviewModelクラスを作成できます。

public class MyViewModel{
    public Person ThePerson{get;set;}
    public Address TheAddress{get;set;]}
}

あるいは

public class MyViewModel : Person{
    public Address TheAddress{get;set;]}
}

しかし、同僚が定期的に2番目のソリューションを選択する間、私は最初のソリューションを好みます。次に、ビューはMyViewModelに対して強く型付けされ、値は@model.Person.PersonIdのような構文を介してビューでアクセスされます。

于 2012-09-05T13:08:18.127 に答える