首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >传统MVC设计模式

传统MVC设计模式
EN

Stack Overflow用户
提问于 2021-11-24 12:50:04
回答 1查看 119关注 0票数 2

关于模型-视图-控制器体系结构,我有几个问题。我对我在互联网上发现的MVC模式上的所有相互冲突的信息和不同的图表感到有点困惑。

  1. 下面的图表是层间MVC流的正确表示吗?如果是这样的话,视图允许直接更新模型而不是通过Controller?

  1. 被动模型和主动模型之间的区别是什么?这些变化如何影响到模型向控制器和视图的传播?

  1. --在模型更新后获取到视图和控制器的新数据(在模型更新中有或没有控制器干扰)

3a。(主动模型-观察者,通知)每次更新时都会通知视图和控制器并从模型中获取新的数据吗?

3b。(被动模型-没有通知)控制器在委托模型更新和将模型更改通知视图之后是否接收更新的模型状态

如果您能帮助我理解MVC,我将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2021-11-24 12:54:45

约束通常由您使用的实现布局。考虑到网络,例如,Symfony对MVC还有其他的想法,而不是ASP.NET。

在web上下文中,没有人“通知”任何人,它都是无状态的,基于HTTP请求和响应。控制器可以接收作为POST主体的模型,也可以从GET参数绑定模型,或者基于ID查找实体。

通常,HTTP请求会触发控制器来执行方法,该方法以类似于return View($model)的内容结尾。然后,这个View()方法将模型呈现给一个模板,并将生成的HTML返回给浏览器。我不会称之为通知或更新模型。

当“视图”(在用户浏览器中呈现为HTML )包含表单时,它可以将用户修改的模型发回给控制器。这算得上是操纵模型的视图吗?浏览器中不存在该模型。只有一张表格。控制器根据请求数据和可能的数据库数据重新构造模型。该模型是被动的,只是一个数据传输对象,其属性包含数据。

在桌面应用程序或其他有状态应用程序("clientside MVC")中,事情确实会通过观察者、侦听器和诸如此类的方式互相通知对方。有一个模型的“实例”,它存在于客户端应用程序中。这可以被认为是一个活跃的模型。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70096397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档