这是我拥有的DB的示例结构:
在学生视图表单中,我添加了表单以添加文件。
在学生控制器中,当我创建或更新条目时,我管理文件上传和文件数据库条目的创建。
我想知道的是,在MVC设计模式中,正确的方法是什么?是我的学生控制器必须知道我的文件模型的完成方式,并且必须知道如何添加文件吗?
或者最好的方法是在我的学生控制器中,我调用文件控制器的添加或更新操作?但就这样,我打破了MVC吗?
谢谢!
答案 0 :(得分:0)
你打破MVC的方式:
在最好的情况下,控制器没有来自数据的反馈,它会传递给模型层(最好是通过一些服务来处理带有域模型层的应用程序逻辑)。
相反,视图实例在开始为用户组装响应时会检查模型的状态(再次通过服务),以查看是否有更改的内容。如果是上传,这将是视图发现上传结果的点,并根据数据决定如何响应。通常在文件上传的情况下,响应将仅包含HTTP位置标头。
我假设您在网络环境中根据您的个人资料历史记录谈论MVC。在经典MVC中,由于在那里使用的观察者模式,视图将知道模型层中的更改而不显式检查它。
虽然您很可能会有一些“上传控制器”,但它不应直接与域对象或存储抽象交互。相反,它只需要用户的请求,从中提取数据并将其传递到需要的位置。
请注意,在网络应用程序中,“用户”是一个网络浏览器,而不是使用它的人。