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