在干净的 MVC 中,我会从数据库中收集数据并将其传递给要呈现的视图。
即使视图逻辑选择不渲染某些元素。这提出了以下问题:
准备一个包含所有数据库查询的容器是否干净,但仅在视图开始迭代此容器(它是可迭代的)时从视图中获取数据,而不是“在控制器中”获取数据?
附录
我传递给视图的容器是“一种”模型,我们称之为模型ExpensiveObjectProvider
。当这个容器被传递给视图时,数据还没有从数据库中获取。
容器封装的对象可能很昂贵。我认为仍然在控制器中执行此操作的唯一原因是错误处理(如果数据库查询出错、连接问题等)。您认为从控制器中的数据库中预取前 1-2-3 个对象,然后将容器传递给视图(如果没有发生异常)并让视图消耗预取的数据,这是一个很好的权衡吗?并在迭代容器时获取新项目?