繁体   English   中英

MVC架构控制流程

[英]MVC architecture control flow

我有点困惑,这三个组件-模型,视图,控制器-在MVC体系结构中如何相互影响。 有时我感觉我知道MVC的工作原理,有时我感觉我不知道它的内部工作正常。

我对MVC架构的了解是-

  1. 控制器是否拦截用户请求,是否为URL
    请求或用户在页面上引发的任何事件。
  2. 然后,控制器处理用户输入并与模型对话。
  3. 模型准备数据并将其发送回控制器。
  4. 最后,控制器将数据移回视图并显示给用户。

在我看来,View从不直接与模型对话。 视图和模型之间的交互将仅由Controller处理。

到现在为止还挺好!

但是当我看到如下图时,我会感到困惑。 在下图中,左箭头表示View组件也可以与Model组件进行交互。

在此处输入图片说明

同样在代码项目文章中,还写道:“控制器和视图都可以访问模型”和“视图可以使用模型显示数据”。

因此,请澄清是仅控制器可以访问模型还是控制器和视图都可以访问模型。 如果第二个也是正确的,那么在什么情况下这是可能的。 我使用ASP.NET MVC Framework,在这里任何交互都是通过控制器对象完成的。 我从未遇到视图直接与模型对象对话的情况。

有MVC(该模式)和MVC(由Microsoft开发并以该模式混乱地命名)的Web应用程序框架,因此最好将两者分开讨论。

在MVC模式中,您将找到以下内容:

  • 模型-包含应用程序的所有业务逻辑,包括有关如何通过数据库查询或其他方法“构建”自身的逻辑。
  • 视图-为UI提供模型的表示形式
  • 控制器-将模型连接到视图

在MVC中,Web应用程序框架:

  • 模型-没有一个。 更适当地,该模型可能是一个或多个实体类,一个DAL层和一个或多个视图模型的某种组合。
  • 视图-与MVC差不多,模式
  • 控制器-将模型连接到视图,但还要承担更多责任。 可能负责从数据库中查询实体,映射到视图模型,为视图创建组件等。

尽管名称如此,MVC框架仅松散地实现了MVC模式。 但是,在这两种模型中,控制器和视图都可以访问模型,因此您对模型的基本理解存在缺陷。 但是,对于MVC框架,您可以说视图只能访问视图模型。 由于MVC框架中的“模型”不仅仅是一件事,因此视图不应访问某些组成部分,即:DAL层和潜在的实体,除非实体作为视图模型承担双重责任,也一样

如果视图是任何模型的强类型输入,那么我们可以说

查看=>模型

如果视图不是用模型强类型化的,那么我们可以说

控制器=>模型=>视图

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM