为什么Orchard没有模型视图控制器?

时间:2017-02-22 08:07:33

标签: asp.net-mvc orchardcms modular-design plugin-architecture clean-architecture

我正在与果园合作。写这样一个项目是我的梦想!所以我开始研究一个回合。关于果园感兴趣的是果园是mvc项目,但为什么它没有任何模型查看控制器网络层解决方案?是使用CleanArchitecture还是某些特定架构,如this

我试图在果园文件中了解这个案例,但我没有找到任何关于它的描述。

1 个答案:

答案 0 :(得分:5)

实际上,Orchard是一个基于MVC的项目,它本质上有模型视图控制器。但它提供的远不止这些。

在我看来,要理解的关键是,在核心,请求由给定的控制器处理,该控制器构建模型,并返回使用此模型的视图。 Orchard增加的是它如何构建特定模型,以及如何选择视图来显示该模型。

通过导航到具有别名" / about"的内容项来考虑请求内容项。

会发生什么,ASP.NET路由将启动,已配置为匹配所有内容项的别名。 " / about"的路线将被找到,它由Contents模块的 ItemController 处理(Orchard中的模块在概念上与MVC区域相同)。 ItemController 将为所请求的内容项构建动态模型,称为 shape 。形状是 Shape 类的一个实例,它包含有关形状的元数据,例如形状的名称。根据这些信息,Orchard利用视图引擎选择合适的Razor 视图来渲染形状对象。

所以你看,所有基本的MVC内容都会发挥作用。 Orchard只是在其上添加了一个强大的基础架构,以提供先进而灵活的渲染系统,例如将内容项转换为形状,然后通过视图引擎将其转换为HTML。但最终,它主要是关于控制器创建视图使用的模型。