10

2 つのモデル クラスがあり、それぞれがデータベース内のテーブルです。1 つのモデルは「服」と呼ばれ、もう 1 つのモデルは「靴」と呼ばれます。

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

@model IEnumerable<Test.Models.Clothes>

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

そうでない場合、別のモデルが既に渡されているビューに別のモデルのコンテンツを表示する通常の方法は何ですか。アドバイスをありがとう。

4

3 に答える 3

12

両方のクラスをオブジェクトとして持つビュー モデル クラスを作成します。その場合、タイプセーフになります。

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 を使用してこれを行うもう 1 つの簡単な方法は、C# 4 に追加された動的機能を使用します。これにより、オブジェクトにプロパティを動的に追加できます。タイプセーフでもあります

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

ViewData を使用して、オブジェクトを html に渡すこともできます。しかし、これは型安全ではありません。キャストが必要です

ViewData["Clothes "] = objClothes ;
ViewData["Shoes "] = objShoes ;
于 2012-07-16T05:10:52.697 に答える
2

独自のクラス別名 View Model を作成し、両方のモデルで構成します。

于 2012-07-16T05:08:57.173 に答える