MVC创建/更新模型关系的动作

时间:2013-01-15 20:20:39

标签: model-view-controller design-patterns

这是我拥有的DB​​的示例结构:

enter image description here

在学生视图表单中,我添加了表单以添加文件。

在学生控制器中,当我创建或更新条目时,我管理文件上传和文件数据库条目的创建。

我想知道的是,在MVC设计模式中,正确的方法是什么?是我的学生控制器必须知道我的文件模型的完成方式,并且必须知道如何添加文件吗?

或者最好的方法是在我的学生控制器中,我调用文件控制器的添加或更新操作?但就这样,我打破了MVC吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

你打破MVC的方式:

  • 控制器是负责任的应用程序逻辑,甚至可能是持久性(它应该只是改变模型层和视图的状态)
  • 模型不是任何单个类,它是由具有不同职责的不同类组成的层(没有“文件模型”或“”学生模型“)

在最好的情况下,控制器没有来自数据的反馈,它会传递给模型层(最好是通过一些服务来处理带有域模型层的应用程序逻辑)。

相反,视图实例在开始为用户组装响应时会检查模型的状态(再次通过服务),以查看是否有更改的内容。如果是上传,这将是视图发现上传结果的点,并根据数据决定如何响应。通常在文件上传的情况下,响应将仅包含HTTP位置标头。

  

我假设您在网络环境中根据您的个人资料历史记录谈论MVC。在经典MVC中,由于在那里使用的观察者模式,视图将知道模型层中的更改而不显式检查它。

虽然您很可能会有一些“上传控制器”,但它不应直接与域对象或存储抽象交互。相反,它只需要用户的请求,从中提取数据并将其传递到需要的位置。

  

请注意,在网络应用程序中,“用户”是一个网络浏览器,而不是使用它的人。