从父级调用子编辑器模板



假设我有一个简单的模型:

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()

这工作正常。它调用车辆编辑器模板,然后调用汽车编辑器模板。不理想,因为这意味着我使用车辆/汽车的每个视图都需要这样做。但至少它有效。

但是为什么它不能从另一个编辑器模板调用编辑器模板呢?这对我来说就像一个虫子...

相关内容

  • 没有找到相关文章

最新更新