大家好,我有一个名为 Vehicle 的基类,其中包含所有车辆共有的所有属性,并且我有多个名为 Car、Jeep 的派生类,它们派生自 Vehicle 并添加更多属性
前任:
public class Vehicle
{
public int Color { get; set; }
public double Cost { get; set; }
}
public class Car : Vehicle
{
public SelectListItem Option { get; set; }
}
我有一个 Page 类,其中有一个像这样的车辆列表
public class Page
{
public List<Vehicle> vehicles { get; set; }
}
我的视图是 Page 类的强类型,所以在我看来,我正在循环所有车辆以显示在这样的页面上,此代码在 @using(Html.BeginForm()) 内部,因此我们回发用户选择
for(int i=0;i<Model.Vehicles.Count;i++)
{
<div id="Question">
@{
@Html.EditorFor(m => m.Vehicle[i], VehicleConstants.GetTemplateName(Model.Questions[i]));
}
<br />
</div>
}
我为每种类型的车辆使用一个编辑器模板,因此调用 VehicleConstants.GetTemplateName 的函数仅根据车辆类型返回要使用的模板名称
这个模板只是简单的在car类或者Jeep类上写属性(Derived class + Base class)
我遇到的问题是,当表单被发回时,我只能访问控制器中基类车辆的属性,我无法获得子类汽车或吉普车的属性值。
[HttpPost]
public string ReadPost(Page page)
{
}
回发表单时自动绑定这些值的最佳方法是什么?
创建自定义活页夹类是我唯一的选择吗?有人可以为我提供一些示例代码来说明如何执行此操作吗?非常感谢任何帮助。