假设我有一个简单的模型:
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,但也添加了设置make的能力。其想法是,如果我决定向Vehicle添加更多属性,我只需更改Vehicle编辑器模板。我的汽车编辑器模板不需要改变。
我本以为这样的东西会起作用:
@model Car
@Html.EditorForModel("Vehicle")
Make: @Html.EditorFor(m => m.make)无论出于什么原因,...but都不是这样的。我的观点很简单:
@model Vehicle
@Html.EditorForModel()当我传入一个汽车模型时,这个视图确实会调用我的汽车模板,所以这是可行的。但唯一出现的就是make的编辑器。这几年没什么事了。因此,@Html.EditorForModel("Vehicle")这一行看起来什么也不做。它不会将车辆命名为EditorTemplate。
有什么想法吗?这两个都是/Views/Shared/EditorTemplates中的editortemplates,我想知道这是否与它有关。我尝试了@Html.EditorForModel("~/Views/Shared/EditorTemplates/Vehicle"),并在其后面附加了一个.cshtml,但都不起作用。
发布于 2012-07-25 21:27:55
至少有一个变通的办法。我将我的视图更改为:
@model Vehicle
@Html.EditorForModel("Vehicle")
@Html.EditorForModel()这很好用。它先将车辆命名为EditorTemplate,然后是汽车EditorTemplate。这并不理想,因为这意味着我使用的车辆/汽车的每个视图都需要这样做。但至少它是有效的。
但是为什么它不能从另一个EditorTemplate调用EditorTemplate呢?对我来说这就像是个虫子。
https://stackoverflow.com/questions/11631078
复制相似问题