ASP.NET MVC EditorTemplate子文件夹

时间:2014-02-21 21:21:50

标签: asp.net-mvc razor razorgenerator

我正在努力,我认为是一个大型的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搜索路径。

2 个答案:

答案 0 :(得分:16)

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

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

例如,如果控制器为Department且模型为String,则框架会询问EditorTemplates/String,并且视图引擎会在~/Views/Department/EditorTemplates/String.cshtml和{{ 1}}。

答案 1 :(得分:3)

Max's answer是一个更优雅和简单的答案。如果您不想这样做 AND ,您需要大量工作,可以write your own ViewEngine