假设我有一个简单的模型:
public Vehicle {
public int year;
}
我有另一个模型从那延伸出来:
public Car : Vehicle {
public string make;
}
我有一个用于车辆的 EditorTemplate,可让您设置年份。它存储在 Views/Shared/EditorTemplates 中:
@model Vehicle
Year: @Html.EditorFor(m => m.year)
我想为调用车辆的 EditorTemplate 的汽车创建一个 EditorTemplate,但还增加了设置品牌的能力。这个想法是,如果我决定向 Vehicle 添加更多属性,我只需要更改 Vehicle 编辑器模板。我的汽车编辑器模板不必更改。
我会认为这样的事情会起作用:
@model Car
@Html.EditorForModel("Vehicle")
Make: @Html.EditorFor(m => m.make)
...但无论出于何种原因,它都没有。我的观点很简单:
@model Vehicle
@Html.EditorForModel()
当我传入 Car 模型时,该视图最终会调用我的 Car 模板,这样就可以了。但是唯一出现的是make的编辑器。一年什么都没有。因此,这条线@Html.EditorForModel("Vehicle")
似乎根本没有做任何事情。它不调用 Vehicle EditorTemplate。
有任何想法吗?这些都是 /Views/Shared/EditorTemplates 中的编辑器模板,我想知道这是否与它有关。我尝试@Html.EditorForModel("~/Views/Shared/EditorTemplates/Vehicle")
了,并在其上附加了一个 .cshtml,但都没有奏效。