MVC 中有 2 个(或更多)模型是否很常见?

Is it common to have 2 (or even more) models in MVC?

在 MVC 应用程序中有 2 个(或更多)模型是否很常见?
因为我正在开发显示天气的应用程序,我需要管理天气数据的模型,以及管理设置的第二个模型(比如在搜索栏中输入时立即显示结果或仅在按下按钮时显示结果)...
我应该只使用一个模型(将我的两个模型合并为一个),还是在软件设计中可以有多个模型?
当然,在我的程序中分离模型的唯一原因是要有清晰的代码...... 谢谢!

您提到了两个要求:管理天气数据和管理设置。 即使通过这两者的字面意思,您也会需要不同的 view/controller/Model。单独管理这两个 View/Controller/Model 确实很复杂并且容易出错。

即使对于天气数据或管理设置的个人需求,如果您发现代码在多个模型下看起来更好,那么您绝对应该添加多个模型。从概念上讲,它在 MVC 中并没有被禁止。

是的,在这种情况下你最好使用 2 个模型。正如有人所说,它在 MVC 中并不被禁止。 任何使代码更清晰的东西都是好的。

这取决于您使用的方法。 您可以通过某种方式实现功能,但遵循标准总是更好。

澄清一下, 如果您使用 ajax 获取数据并使用 Jquery 或任何客户端库或框架绑定它,那么您可以使用单独的模型和事件两个单独的 ajax 方法。

如果您使用的是强类型 C# ViewModel,在 CSHtml 页面的开头声明它并使用 razor 语法,那么您应该使用 Common Model 将这两个单独的模型结合起来。

这里已经有几个有用的答案。根据 the inventor of MVC:

的记录,一个更正式的记录
  • 一个应用程序只有一个控制器,因为它是应用程序和用户输入之间的link。
  • 一个应用程序可能有多个视图。
  • 一个应用程序可能会使用多个模型:因此让两个单独的模型各自处理一个 separate concern
  • 没有问题
  • 此外,一个模型可能会被多个应用程序使用。

当然,一个controler/view/model不等于一个class:几个class可以一起完成这个角色。这就是为什么 MVC 通常以一个模型的简化版本呈现:最后,从 OOP 的角度来看,组成模型的许多 class 是否属于一个或多个抽象模型并不重要。