2012-07-16 7 views
8

私は2つのモデルクラスを持っており、それぞれデータベース内のテーブルです。 1つのモデルは「服」と呼ばれ、他のモデルは「靴」と呼ばれます。MVCを表示するために複数のモデルを送信する4

各テーブルの内容を同じカミソリビューで表示したいのですが、MVCは1つのモデルをビューに送信するだけです。

@model IEnumerable<Test.Models.Clothes> 

剃刀のビューに複数のモデルを送信する方法はありますか?

もしそうでなければ、もう1つのモデルが渡されたビュー内の別のモデルの内容を表示する通常の方法は何ですか?アドバイスをありがとう。

答えて

11

クラスを両方のオブジェクトとして持つビューモデルクラスを作成します。タイプセーフである。

public class ViewModelForDisplay 
{ 
     public Clothes Clothes {get; set;} 
     public Shoes Shoes {get; set;} 
} 

//on Controller 
Clothes objClothes = GetClothes(); 
Shoes objShoes = GetShoes(); 

ViewModelForDisplay objViewModel = new ViewModelForDisplay() {Clothes = objClothes, Shoes= objShoes } 

ViewBag.Itを使用することによってそれを行うための他の簡単な方法は、オブジェクトを動的それに追加の特性を有することを可能にするC#4に加えた動的特徴を使用します。そのタイプセーフです

ViewBag.Shoes= objShoes ; 
ViewBag.Clothes= objClothes ; 

また、ViewDataを使用してオブジェクトをhtmlに渡すこともできます。これはタイプセーフではありません。それは、私は非常に興味深い記事を見つけました

ViewData["Clothes "] = objClothes ; 
ViewData["Shoes "] = objShoes ; 
+3

ビューモデルは好ましいアプローチです。 – RickAndMSFT

+1

さらに、モデル(データベースオブジェクト)をビューに渡すことはお勧めできません。必要なフィールドのみでViewModelを作成する –

+0

リプレイとコードサンプルを与えてくれてありがとう、コントローラを拡張する可能性はありますか?それは私にとってはうまくいかない。 – user1448260

1

あなた自身のクラスを別名表示モデルにして、両方のモデルで構成します。

関連する問題