我在果园工作。写这样一个项目是我的梦想!..所以我开始了一项研究。我对 orchard 感兴趣的是,虽然 orchard 是 mvc 项目,但为什么它在他的 web 层解决方案中没有任何模型、视图和控制器?它使用 或像这样CleanArchitecture
的一些特定架构吗?
我试图在果园文件中了解这个案例,但我没有找到任何关于它的描述。
我在果园工作。写这样一个项目是我的梦想!..所以我开始了一项研究。我对 orchard 感兴趣的是,虽然 orchard 是 mvc 项目,但为什么它在他的 web 层解决方案中没有任何模型、视图和控制器?它使用 或像这样CleanArchitecture
的一些特定架构吗?
我试图在果园文件中了解这个案例,但我没有找到任何关于它的描述。
实际上,Orchard 是一个基于 MVC 的项目,它本质上确实有模型、视图和控制器。但它提供的远不止这些。
在我看来,要理解的关键是,在核心上,请求由给定的控制器处理,该控制器构建一个模型,并返回一个使用该模型的视图。Orchard 添加的内容是它如何构建特定模型,以及它如何选择视图来显示该模型。
考虑通过导航到具有别名“/about”的内容项来请求内容项。
发生的情况是 ASP.NET 路由将启动,该路由已配置为匹配所有内容项的别名。将找到“/about”的路由,由Contents 模块的ItemController处理(Orchard 中的模块在概念上与 MVC 区域相同)。ItemController将为请求的内容项构建一个动态模型,称为shape。形状是Shape类的一个实例,其中包含有关形状的元数据,例如形状的名称。基于此信息,Orchard 利用视图引擎选择适当的 Razor视图来渲染形状对象。
所以你看,所有基本的 MVC 东西都在起作用。Orchard 只是在其之上添加了一个强大的基础架构,以提供先进且灵活的渲染系统,例如将内容项转换为形状,然后通过视图引擎将其转换为 HTML。但归根结底,它主要是关于控制器创建视图使用的模型。