MVC 中的模型到视图通信?

The Model-to-View communication in MVC?

我现在正在学习MVC,我刚刚了解到当控制器修改模型时,它可以通知视图更新模型中的数据。虽然我对此很困惑。由于模型是由控制器而不是它自己或其他东西修改的,因此应该是控制器向视图发送更新通知。另外我还没有找到任何这种模型到视图通信的例子,如果有人很好地理解这个想法,请给我一个说明清楚。

MVC 的核心组件 model 捕获应用程序在其问题域方面的行为,独立于用户界面。 model 直接管理应用程序的数据、逻辑和规则。 view 可以是信息的任何输出表示形式,例如图表或示意图。 第三部分 controller 接受输入并将其转换为 modelview.

的命令

通常 controller 接收用户输入,例如按键和鼠标点击,并根据这些输入修改 model。当 model 更改时,需要更新 view 以反映更改。

有几个选项可以实现 view 更新。

A) view 更新可以通过在 controller 修改 model 之后直接调用它来实现。有关示例,请参阅 here.

B) view 更新可以使用 Observer pattern. In this case the model fires update events on the view each time there is a relevant change in the model. For an example see here.

实现

查看通信的模型通常是通过观察者模式完成的。视图中的代码往往比模型中的代码更改更多,因此模型-视图分离意味着模型元素不直接依赖于视图元素。您可以添加或更改视图代码,模型代码不受影响。

状态改变的模型元素只是通知它的所有观察者。状态变化可能由于控制器或其他原因(值随时间变化)而发生。

请参阅 https://msdn.microsoft.com/en-us/library/ff649643.aspx 尤其是以下内容:


(来源:s-msft.com