11

我正在开发一个大型的 ASP.NET MVC 网站。目前有近 100 个编辑器模板(全部用于 1 个控制器),而且这个数字还会增长。

我想要完成的是组织我的视图,使它们更容易找到和版本。这个“版本”步骤将使视图随着时间的推移而增加。您可以将此项目视为一个问题/答案应用程序,其中创建了考试,并且可以在以后提取。基本上,对于这个特定的项目,views/EditorTemplates 不能真正在生产中更改一次,因此必须创建一个新副本以供将来使用。对旧观点的引用仍然存在,使该考试的外观和行为与一年前一样。同样,新考试将自动选择新版本的视图,并使用该版本。我想拥有这种类型的结构,但我有其他想法。

Views/Shared/EditorTemplates/Common
Views/Shared/EditorTemplates/Common/v2
Views/Shared/EditorTemplates/Common/v3
Views/Shared/EditorTemplates/Department
Views/Shared/EditorTemplates/Department/v2

注意:即使我将有版本化的子目录,这意味着我将拥有相同模型和模板的多个版本,但新文件将具有唯一的文件名。此外,我还尝试使用 Razor Generator 来编译我的视图。不确定是否可以扩展以添加其他 EditorTemplate 搜索路径。

4

2 回答 2

19

该框架不会在那里查看,而是使用本地 EditorTemplate 文件夹,例如Views/Department/EditorTemplates.

编辑器模板由视图引擎定位,它首先查找,~/Views/{1}/{0}.cshtml然后查找~/Views/Shared/{0}.cshtml.

例如,如果控制器是Department并且模型是 a String,则框架会要求EditorTemplates/String,并且视图引擎会查找~/Views/Department/EditorTemplates/String.cshtml~/Views/Shared/EditorTemplates/String.cshtml

于 2014-02-22T00:15:29.553 回答
3

Max 的答案是一个更加优雅和简单的答案。如果您不想这样做并且想要大量工作,则可以编写自己的 ViewEngine

于 2014-02-22T00:41:39.477 回答