首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从父级调用子EditorTemplates

从父级调用子EditorTemplates
EN

Stack Overflow用户
提问于 2012-07-24 20:39:54
回答 1查看 164关注 0票数 0

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

代码语言:javascript
复制
public Vehicle {
    public int year;
}

我有另一个模型,它是从这个模型扩展而来的:

代码语言:javascript
复制
public Car : Vehicle {
    public string make;
}

我有一个车辆的EditorTemplate,可以让你设置年份。存储在Views/Shared/EditorTemplates中:

代码语言:javascript
复制
@model Vehicle
Year: @Html.EditorFor(m => m.year)

我想为一辆汽车创建一个EditorTemplate,它调用车辆的EditorTemplate,但也添加了设置make的能力。其想法是,如果我决定向Vehicle添加更多属性,我只需更改Vehicle编辑器模板。我的汽车编辑器模板不需要改变。

我本以为这样的东西会起作用:

代码语言:javascript
复制
@model Car
@Html.EditorForModel("Vehicle")
Make: @Html.EditorFor(m => m.make)

无论出于什么原因,...but都不是这样的。我的观点很简单:

代码语言:javascript
复制
@model Vehicle
@Html.EditorForModel()

当我传入一个汽车模型时,这个视图确实会调用我的汽车模板,所以这是可行的。但唯一出现的就是make的编辑器。这几年没什么事了。因此,@Html.EditorForModel("Vehicle")这一行看起来什么也不做。它不会将车辆命名为EditorTemplate。

有什么想法吗?这两个都是/Views/Shared/EditorTemplates中的editortemplates,我想知道这是否与它有关。我尝试了@Html.EditorForModel("~/Views/Shared/EditorTemplates/Vehicle"),并在其后面附加了一个.cshtml,但都不起作用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-25 21:27:55

至少有一个变通的办法。我将我的视图更改为:

代码语言:javascript
复制
@model Vehicle
@Html.EditorForModel("Vehicle")
@Html.EditorForModel()

这很好用。它先将车辆命名为EditorTemplate,然后是汽车EditorTemplate。这并不理想,因为这意味着我使用的车辆/汽车的每个视图都需要这样做。但至少它是有效的。

但是为什么它不能从另一个EditorTemplate调用EditorTemplate呢?对我来说这就像是个虫子。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11631078

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档