ASP.NET MVC从不同的文件夹动态加载视图/部分视图



我非常感谢您为实现以下场景提供技术/策略方面的帮助:

我们需要有这种文件夹结构的ASP.NET MVC 5网站

名称是文件夹,文件名是用扩展名指定的。

网站文件夹结构:


    • 显示控件
      • 产品
        • SimpleProductPage
          • SimpleProductPage.cshtml
          • 控件
            • Image.cshtml
            • 产品说明.cstml
        • 带有图片库的产品页
          • 带有图片库的产品页面.cshtml
          • 控件
            • 图片库.cshtml
            • 产品说明.cstml
      • 类别
        • 简单类别页面
          • 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/

我处理上述情况的方法是创建一个自定义视图引擎,该引擎将从指定的文件夹结构加载视图。

希望这对有帮助

感谢大家的支持。

最新更新