MVC for dummies:为什么控制器必须向视图发送任何内容?

如果我做到这一点,那么Controller的功能就是处理POST数据,并通过Model在技术上改变应用程序的状态(例如DB)。 据我所知,View也从模型中获取数据。 这就是我理解工作流程的方式: 客户请求 - >
App Front Controller
- >(如果方法= POST - >
Controller
) - >
View
- >返回客户端 这里
Model
用于读取和写入数据,
View
用于读取数据。 因此,每次加载页面时都不会使用控制器,事实上,只有在添加/更新应用程序数据时才使用控制器。大多数时候控制器被绕过。 那么,为什么几乎所有关于MVC的资源都在谈论Controller向视图发送数据? 我正在尝试使用类似MVC的模式编写应用程序。因此,在我的应用视图中,始终从模型中获取页面的数据。当Model更新时,我将特定的模型更新时间添加到Memcache。在运行时,每个View查找相关模型的上次更新时间,并生成此视图的上次缓存。如果在保存缓存之前更新了模型,则视图将读取缓存,否则将根据更新的模型重新渲染。     
已邀请:
控制器负责根据请求的数据显示视图。它就在那里,所以模型和视图都不需要知道请求。是的,视图从模型中获取数据,但并不总是直接;控制器可能还必须根据请求做出一些决定。 这就像在餐馆里有服务员一样,他们可以接受订单并为顾客提供菜肴。准备好后,不是厨师带出饭菜;这是服务员。不是去厨房要求吃饭的顾客;是服务员接受他们的命令然后让厨师知道为谁做准备。以同样的方式,控制器可以处理客户端请求,无论其性质如何。虽然这是一个非常粗略的比较,但我希望你能得到它。     
除非我误解了你的问题:问题在于直接访问模型的视图。这不应该发生,因为它击败了MVC模式的原因。视图不应该对模型本身有任何了解,因此模型可以与其他东西交换 - 控制器应该向视图提供数据(在大多数情况下它是扁平的或投影的方式)。 如果我这样做:控制器永远不会被绕过。仅仅因为它对数据没有任何作用,并不意味着它不需要 - 它在模型和视图之间提供了一层抽象。关键是能够在不必调整视图的情况下交换模型。     
永远不会绕过控制器,因为需要指示显示哪些视图以及在这些视图中使用了哪些数据(如果有)。每个获取或发布到MVC站点的请求都使用控制器来控制向客户端显示或从客户端收集的内容。 其核心MVC用于分离问题。该模型使用数据,视图处理表示,控制器提供两者之间的逻辑。     
如果你是一个通过肮脏的代码或寻找视觉上的东西学得更快的人,比如我.... 我建议你按照railsforzombies.org上的教程进行操作。它几乎解释了所有基本的使用rails,包括MVC。在教程中,它提到如果你将所有这些逻辑放在视图中,它将是凌乱的。代码会稍微有点因为想要使用你的代码的人会与代码混淆。通过将所有逻辑放在控制器中并将其输出到视图中。对于查看您的代码的人来说,这将非常清楚。     
通常,Controller使用Model,并将proccessed数据传递给View。视图不应该看模型。主要目标是 - 将View与模型分开保存!     

bab

MVC for dummies:为什么是控制器   必须发送任何意见? 这是MVC的要点:通过分离和区分应用程序的关注点来创建松散耦合。您有View,Model和Controller执行特定任务。 为什么需要分离,因为很难调试和修复一个巨大的哥斯拉应用程序。想象一下修一辆用石头做的车。没有螺栓。一切都是从一块巨大的岩石上凿出来的。如果你只是想改变车轮,修复它有多难。你需要凿出岩石本身。 控制器的主要工作是处理请求并显示适当的视图。这是它的工作。这就像是为什么邮递员需要发送邮件。因为那是他的工作。     

要回复问题请先登录注册