0

エンティティ Car と、Car を継承する 2 つのエンティティ (SportsCar、Truck) から構成されるエンティティ モデルがあるとします。

私のサイトでは、SportsCars と Trucks を組み合わせた Cars のリストを表示したいと考えていますが、それぞれの独自の機能も表示しています。

コントローラーで、モデルからすべての車を取得し、それらをビューに送信します。

車がスポーツカーかトラックかをチェックするロジックをビューに構築するにはどうすればよいですか?

4

1 に答える 1

0

表示テンプレートを使用できます。例を見てみましょう。

モデル:

public class Car
{
    public string CommonProperty { get; set; }
}

public class SportCar : Car
{
    public string CarSpecificProperty { get; set; }
}

public class Truck: Car
{
    public string TruckSpecificProperty { get; set; }
}

コントローラ:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        var model = new Car[]
        {
            new SportCar { CommonProperty = "sports car common", CarSpecificProperty = "car specific" },
            new Truck { CommonProperty = "truck common", TruckSpecificProperty = "truck specific" },
        };
    }
}

ビュー ( ~/Views/Home/Index.cshtml):

@model Car[]

@for (int i = 0; i < Model.Length; i++)
{
    <div>
        @Html.DisplayFor(x => x[i].CommonProperty)
        @Html.DisplayFor(x => x[i])
    </div>
}

スポーツカーの表示テンプレート ( ~/Views/Home/DisplayTemplates/SportCar.cshtml):

@model SportCar
@Html.DisplayFor(x => x.CarSpecificProperty)

トラックの表示テンプレート ( ~/Views/Home/DisplayTemplates/Truck.cshtml):

@model Truck
@Html.DisplayFor(x => x.TruckSpecificProperty)
于 2012-05-06T19:43:06.923 に答える