MVC架构控制流

时间:2017-06-06 16:30:42

标签: asp.net-mvc design-patterns model-view-controller architecture

我有点困惑,三个组件 - 模型,视图,控制器 - 如何在MVC架构中相互交互。有时我觉得我知道MVC是如何工作的,有时我觉得我不知道它的内部工作正常。

我对MVC架构的了解是 -

  1. 控制器拦截用户请求是否为URL
    请求或用户在页面上提出的任何事件。
  2. 然后,控制器处理用户输入并与模型进行对话。
  3. 模型准备数据并发送回Controller。
  4. 最后,控制器将数据移交给视图并显示给用户。
  5. 在我看来,View从不直接与模型对话。视图和模型之间的交互仅由Controller 处理

    到目前为止一切顺利!

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

    enter image description here

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

    请务必澄清模型是否只能由控制器或控制器和视图访问。如果第二个也是正确的,那么在什么情况下这是可能的。我在ASP.NET MVC框架上工作,这里任何交互都是通过控制器对象完成的。我从未遇到过视图直接与模型对象对话的情况。

2 个答案:

答案 0 :(得分:0)

有MVC,模式和MVC,这是由微软开发的Web应用程序框架,并且以模式的名字命名,因此最好将这两个分开并单独讨论。

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

  • 模型 - 包含应用程序的所有业务逻辑,包括如何构建"的逻辑。本身,无论是通过数据库查询还是其他方法。
  • 查看 - 提供UI的模型表示
  • 控制器 - 将模型连接到视图

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

  • 模特 - 不是一个人。更合适的是,模型可能是一个或多个实体类,DAL层和一个或多个视图模型的某种组合。
  • 查看 - 与MVC,模式
  • 几乎相同
  • 控制器 - 将模型连接到视图,但也承担更多责任。可以负责从数据库中查询实体,映射到视图模型,为视图创建组件等。

尽管有名称,但MVC框架只是松散地实现了MVC模式。但是,在两者中,控制器和视图都可以访问模型,因此您的基本理解存在缺陷。但是,对于MVC框架,您可以说视图只能访问视图模型。自"模型"在MVC框架中不仅仅是一件事,视图不应该访问组成部分,即:DAL层和潜在的实体,除非实体作为视图模型执行双重任务。

答案 1 :(得分:-1)

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

查看=>模型

如果视图没有用模型强类型,那么我们可以说

控制器=>模型=>观点