假设我有一个简单的模型:
public Vehicle {
public int year;
}
我还有另一个模型可以延伸出来:
public Car : Vehicle {
public string make;
}
我有一个车辆编辑器模板,允许您设置年份。它存储在视图/共享/编辑器模板中:
@model Vehicle
Year: @Html.EditorFor(m => m.year)
我想为汽车创建一个编辑器模板,它调用车辆的编辑器模板,但也增加了设置品牌的功能。这个想法是,如果我决定向车辆添加更多属性,我只需要更改车辆编辑器模板。"我的汽车"编辑器模板无需更改。
我本以为这样的事情会起作用:
@model Car
@Html.EditorForModel("Vehicle")
Make: @Html.EditorFor(m => m.make)
。但无论出于何种原因,它都没有。我的观点是这样的简单:
@model Vehicle
@Html.EditorForModel()
当我传入汽车模型时,该视图最终会调用我的 Car 模板,因此可以正常工作。但唯一出现的是 make 编辑器。一年什么都没有。因此,@Html.EditorForModel("Vehicle")
行似乎根本没有做任何事情。它不调用车辆编辑器模板。
有什么想法吗?这些都是/Views/Shared/EditorTemplates 中的编辑器模板,我想知道这是否与此有关。我尝试@Html.EditorForModel("~/Views/Shared/EditorTemplates/Vehicle")
,并在其附加了一个.cshtml,但都没有用。
至少有一个解决方法。我把我的观点改为:
@model Vehicle
@Html.EditorForModel("Vehicle")
@Html.EditorForModel()
这工作正常。它调用车辆编辑器模板,然后调用汽车编辑器模板。不理想,因为这意味着我使用车辆/汽车的每个视图都需要这样做。但至少它有效。
但是为什么它不能从另一个编辑器模板调用编辑器模板呢?这对我来说就像一个虫子...