首页 文章

在MVC模式中,Model可以交互/修改View吗?

提问于
浏览 431
2

在维基百科上以这种方式描述MVC模式组件交互:

该模型负责管理应用程序的数据 . 它从控制器接收用户输入 . 视图意味着以特定格式呈现模型 . 控制器响应用户输入并对数据模型对象执行交互 . 控制器接收输入,可选地验证它,然后将输入传递给模型 .

我知道View不应该与Model交互 . 但是在我在网上找到的大多数图表中,MVC表示如下:

我们可以看到Model does 与View交互并且能够修改它,并且它不会更新 Controller 更新 Controller ,更新 View

我错过了什么?

3 回答

  • 2

    MVC架构创建于20世纪70年代 . 显然目前没有互联网 . 在原始版本中,Model直接通过数据绑定更新View,也称为发布/订阅,也称为Observer Pattern .

    Gang of Four Design Patterns一书详细描述了这个MVC架构 . 这本书的几个引用是另一个答案here .

    MVC架构非常受欢迎,当互联网出现时,开发人员希望继续使用它;但它并不适合客户端/服务器应用程序 . 因此诞生了“WebMVC”,这是你今天最常见的版本 . WebMVC通常实现为分层体系结构,原始设计不是 .

    当两个架构混淆时,就会出现混乱 . 通常两者都简称为MVC . 更糟糕的是,诸如MVP和MVVM之类的相关架构可以称为MVC .

    就个人而言,我发现桌面MVC和Web MVC之间的关系有点像Java和JavaScript之间的关系 . 后者捎带着前者的着名名称,以实现一些显着不同的东西 .

  • 1

    不能直接使用模型访问视图,您必须首先访问控制器作为其MVC模式

  • 1

    图表 - Value 千言万语!在Microsoft MVC 5/6中,图中使用的精确单词和上下文可能并不能说明实现的故事 .

    用户与控制器的交互 . 不是视图而不是模型 . 在控制器上调用操作将返回一些内容(视图,文件,重定向等) .

    在返回信息视图的情况下,控制器已经计算出用户请求的数据可以检索适合请求的模型,将其传递到视图中,并返回该模型的视图结果 .

    在上图中,不清楚控制器在将模型移动到视图中时充当代理 . 模型不决定视图 . 为什么?根据返回控制器的模型中的内容,可能会返回不同的视图 . 这就是控制器被恰当命名的原因 . 它处于决策和移动物体的事务中心 .

    所以你缺少的是关于MVC过程在实现时如何发生的一些背景

相关问题