エンティティ Car と、Car を継承する 2 つのエンティティ (SportsCar、Truck) から構成されるエンティティ モデルがあるとします。
私のサイトでは、SportsCars と Trucks を組み合わせた Cars のリストを表示したいと考えていますが、それぞれの独自の機能も表示しています。
コントローラーで、モデルからすべての車を取得し、それらをビューに送信します。
車がスポーツカーかトラックかをチェックするロジックをビューに構築するにはどうすればよいですか?
エンティティ Car と、Car を継承する 2 つのエンティティ (SportsCar、Truck) から構成されるエンティティ モデルがあるとします。
私のサイトでは、SportsCars と Trucks を組み合わせた Cars のリストを表示したいと考えていますが、それぞれの独自の機能も表示しています。
コントローラーで、モデルからすべての車を取得し、それらをビューに送信します。
車がスポーツカーかトラックかをチェックするロジックをビューに構築するにはどうすればよいですか?
表示テンプレートを使用できます。例を見てみましょう。
モデル:
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)