繁体   English   中英

控制器如何在MVC中与视图一起使用?

[英]How does controller work with view in MVC?

http://geekswithblogs.net/dlussier/archive/2009/11/21/136454.aspx

在此处输入图片说明

MVC –模型视图控制器

首先让我们看一下MVC。 您会注意到关于该图的一些注意事项:

输入首先指向控制器,而不是视图。 该输入可能来自与页面交互的用户,但也可能来自简单地在浏览器中输入特定的URL。 在任何一种情况下,其Controller都与之连接以启动某些功能。

控制器和视图之间存在多对一的关系。 这是因为单个控制器可以根据正在执行的操作选择要渲染的不同视图。

请注意从控制器到视图的单向箭头。 这是因为视图不了解控制器或对该控制器没有任何参考。

Controller确实会传回模型,因此在视图和传递给它的预期模型之间有知识,但Controller没有提供知识。

  1. 最后一句话是什么意思? 具体来说,这三个子句是什么意思:

    • “控制器确实传递了模型”

    • “在视图和预期模型之间传递了知识”

    • “不是控制器负责”吗?

  2. 从模型到视图之间有一个箭头,这意味着只要模型状态改变,视图就会自动更新。 这不是通过控制器完成的。 那么为什么要从控制器上看到箭头(一对多关系)呢?

  3. Wikipedia的图中 ,视图和控制器之间没有箭头。 这是对的吗?

    在此处输入图片说明

  4. 四人帮”的设计模式

    MVC还使您可以更改视图对用户输入的响应方式,而无需更改其视觉表示。 例如,您可能想更改它对键盘的响应方式,或者让它使用弹出菜单而不是命令键。 MVC将响应机制封装在Controller对象中。 控制器具有一类层次结构,可以轻松创建新的控制器作为现有控制器的变体。

    视图使用Controller子类的实例来实现特定的响应策略。 要实施不同的策略,只需将实例替换为其他类型的控制器即可。 甚至有可能在运行时更改视图的控制器,以使视图更改其对用户输入的响应方式。 例如,可以禁用视图,以便仅通过为其提供一个忽略输入事件的控制器即可不接受输入。

    这本书是否意味着视图和控制器之间直接存在交互?

谢谢。

暂无
暂无

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

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