我非常感谢您为实现以下场景提供技术/策略方面的帮助:
我们需要有这种文件夹结构的ASP.NET MVC 5网站
名称是文件夹,文件名是用扩展名指定的。
网站文件夹结构:
- 根
- 显示控件
- 产品
- SimpleProductPage
- SimpleProductPage.cshtml
- 控件
- Image.cshtml
- 产品说明.cstml
- 带有图片库的产品页
- 带有图片库的产品页面.cshtml
- 控件
- 图片库.cshtml
- 产品说明.cstml
- SimpleProductPage
- 类别
- 简单类别页面
- SimpleCategoryPage.cshtml
- 控件
- 目录产品.shtml
- 相关产品.shtml
- 类别页面
- 类别页面.shtml
- 控件
- 目录产品.shtml
- 相关产品.shtml
- 简单类别页面
- 产品
- 控制器
- someControllerfiles.cs
- 视图
- ProductView.cshtml
- CategoryView.cshtml
- 其他一些观点
- 其他文件和文件夹
- 显示控件
现在如果我们想请求产品页面,那么ProductView.cshtml将从控制器加载,在该视图中,我们想根据数据库条目从"DisplayControls"文件夹加载一些显示控件。如果条目说我们需要加载"SimpleProductPage",那么我们将从"SimpleProductPage"文件夹加载视图,即SimpleProductPage.cshtml并且该视图将具有其控件,即从其控件文件夹加载的局部视图。如果所选显示控件为"ProductPageWithImageGallery",则将加载该文件夹中的视图及其子视图/局部视图。
类别页面也是如此,基于DB条目,将从该文件夹加载相应的控件/Biews。
因此,基本上ProductView.cshtml和CategoryView.cshtml将充当占位符,SelectedViews/ChildViews将在运行时加载到它们上。正如你所看到的,我们的目标视图没有位于视图文件夹中,所以这对我来说有点问题。
我是MVC的新手,我们正在使用MVC 5,你们能帮我如何实现吗。
您需要创建一个自定义视图引擎,很可能继承自Razor视图引擎,并覆盖一个确定在哪里查找视图的方法。
关于这个主题的一个博客:
http://theshravan.net/blog/configure-the-views-search-locations-in-asp-net-mvc/
我处理上述情况的方法是创建一个自定义视图引擎,该引擎将从指定的文件夹结构加载视图。
希望这对有帮助
感谢大家的支持。