【问题标题】:Does MVC define how one controller should communicate with another?MVC 是否定义了一个控制器应该如何与另一个控制器通信?
【发布时间】:2012-01-06 05:08:21
【问题描述】:

我指的是通用的 MVC 设计模式(在Wikipedia 中定义)。在做一个 GUI 密集型应用程序时,我通常会有很多控制器,有时一个控制器可以向另一个控制器发送事件。

MVC 是否通常定义控制器应如何与控制器通信?控制器可以成为层次结构中更高级别控制器的模型吗?

示例 假设我有一个窗口(由控制器/模型/视图表示),并且该窗口能够启动另一个子窗口。子窗口是模态的,将接受某些输入。输入会影响主窗口中的某些进程。

【问题讨论】:

  • 为什么您的控制器需要与另一个控制器通信?
  • 您能否举例说明何时可能希望使用一个控制器与另一个控制器通信?您可能只是与控制器处理请求的模型进行通信。
  • 根据要求添加示例。
  • 除了jgauffin建议的模式,还可以看看delegate模式。 Apple 严重依赖这种模式来完成您想要的工作,其中较高级别的控制器充当较低级别控制器的代表。

标签: model-view-controller design-patterns


【解决方案1】:

没有。你不能用 MVC 做到这一点。您想使用某种分层模式,例如以下两种之一:

【讨论】:

    【解决方案2】:

    没有一个控制器不能成为另一个控制器的模型。控制器只能通过 Get 或 Post 传递参数

    【讨论】:

      【解决方案3】:

      参考 Wiki 模型-视图-控制器 (MVC) 是一种将信息表示与用户与之交互分离的架构。

      话虽如此,它没有定义任何事件机制,因此没有关于控制器内部通信的规范。

      现在来回答你的问题。

      您可以从一个控制器渲染视图并将数据提交到另一个控制器。那应该可以正常工作。

      使用<form action = "parentcontroller/parentaction"> 定义表单以实现它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-01-22
        • 1970-01-01
        • 1970-01-01
        • 2016-10-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-07
        相关资源
        最近更新 更多