2014-02-21 118 views
8

我正在研究,我认为是一个大的ASP.NET MVC网站。目前有近100个编辑器模板(全部用于1个控制器),并且这个数字将会增长。

我想要完成的是组织我的视图,使他们更容易找到和版本。随着时间的推移,这个'版本'步骤将会使观点倍增。您可以将此项目视为一个问题/答案应用程序,在该应用程序中创建了考试,并且可以在稍后提取。基本上,对于这个特定的项目,视图/ EditorTemplates在生产中不能真正改变,因此必须创建新的副本供将来使用。旧观点的参考依然存在,使得该考试的外观和行为与一年前相同。同样,新的考试将自动提取视图的新版本,并使用该版本。 我想要有这种类型的结构,但我渴望其他想法。ASP.NET MVC EditorTemplate子文件夹

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搜索路径。

+0

您可以添加您自己的视图引擎,并自定义MVC发现视图的方式和位置。 –

+0

我正在尝试使用Razor Generator,它将视图编译为单独的程序集。我正在寻找一个解决方案(希望)让我仍然可以使用它,也许可以延长这一点。 –

+0

我还没有使用剃须刀发电机。 –

回答

14

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

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

例如,如果该控制器是Department并且所述模型是String,框架请求EditorTemplates/String,并且视图发动机看起来~/Views/Department/EditorTemplates/String.cshtml~/Views/Shared/EditorTemplates/String.cshtml

+0

什么是“本地EditorTemplates”?如何注册/定义路径? –

+0

@ user3338892已更新的答案。 –

+0

我不确定这会对我有用。所有EditorTemplates都在同一个控制器下。 '部门'的例子是我分类我的观点的一种方式,这是这篇文章的内容。 –