假设我有一个简单的模型:
public Vehicle {
public int year;
}
我还有另一种模式:
public Car : Vehicle {
public string make;
}
我有一个EditorTemplate for Vehicle,可以让你设定年份。它存储在Views / Shared / EditorTemplates:
中@model Vehicle
Year: @Html.EditorFor(m => m.year)
我想为Car调用EditorTemplate for Vehicle创建一个EditorTemplate,同时还增加了设置make的功能。我的想法是,如果我决定向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中的editortemplate,我想知道它是否与它有关。我尝试了@Html.EditorForModel("~/Views/Shared/EditorTemplates/Vehicle")
,并附加了一个.cshtml,但都没有效果。
答案 0 :(得分:0)
至少有一个解决方法。我改变了观点:
@model Vehicle
@Html.EditorForModel("Vehicle")
@Html.EditorForModel()
这没关系。它调用Vehicle EditorTemplate,然后调用Car EditorTemplate。不理想,因为它意味着我使用车辆/汽车的每个视图都需要这样做。但至少它有效。
但为什么不能从其他EditorTemplate调用EditorTemplate?这对我来说感觉像个错误......