如何在视图中处理具有继承的实体模型?

时间:2012-05-06 19:15:14

标签: asp.net-mvc entity-framework

假设我有一个由实体Car组成的实体模型,以及从Car继承的2个实体(SportsCar,Truck)。

在我的网站上,我想显示一个汽车列表,混合跑车和卡车,还会显示每个汽车的独特功能。

在我的控制器中,我从模型中检索所有汽车并将它们发送到视图。

如何在我的视图中构建逻辑,检查汽车是跑车还是卡车?

1 个答案:

答案 0 :(得分: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)