ASP.NET MVC EditorTemplate子文件夹

11

我正在开发一个我认为比较庞大的ASP.NET MVC网站。目前,有近100个编辑器模板(全部针对1个控制器),而且这个数量还会增加。

我的目标是通过组织视图使其更易于查找和版本控制。随着时间的推移,“版本控制”步骤将导致视图数量增加。可以将这个项目想象成一个问答应用程序,其中创建考试并可以在以后进行调取。基本上,对于这个特定的项目,视图/编辑器模板一旦进入生产就不能真正改变,因此必须为将来使用创建新副本。对旧视图的引用仍然存在,使得那次考试看起来和行为与一年前相同。同样,新考试将自动获取新版本的视图,并使用该版本。 我希望拥有这种类型的结构,但愿意接受其他想法。

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

您可以添加自己的视图引擎并自定义MVC如何以及在哪里发现视图。 - Mike Cheel
我正在尝试使用Razor Generator,它将视图编译为单独的程序集。我正在寻找一个解决方案,希望能够继续使用它,甚至扩展它。 - Jay McKinney
我没有使用 Razor Generator。 - Mike Cheel
2个回答

19

该框架不会搜索那个文件夹,请使用本地的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


“local EditorTemplates”是什么?路径是如何注册/定义的? - Jay McKinney
我不确定这对我是否适用。所有的EditorTemplates都在同一个控制器下。"Department"例子是我分类视图的一种方式,而这就是本帖的主题。 - Jay McKinney
这个回答有点不太清楚。当它查找EditorTemplates/String.cshtml文件时,它是使用哪个位置来查找的?是"~/Views/Shared/{0}.cshtml"?还是其他什么地方?我试着添加了一个子文件夹~/Views/Shared/MySub/EditorTemplates,并将搜索路径添加为~/Views/Shared/MySub/{0}.cshtml,可惜没有起作用。 - Chris Moschini
2
@ChrisMoschini EditorTemplates/String.cshtml 替换了 {0} - Max Toro
@MaxToro 你测试过了吗?我测试了,但是失败了。Partials的方法可以用,但是使用这种方法无法找到EditorTemplates/DisplayTemplates文件夹。需要更多/不同的东西。 - Chris Moschini
显示剩余2条评论

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接