model-view-controller – 导航逻辑应该在控制器还是视图中?

在MVC Web应用程序中,“代码/逻辑”显示到“下一页”导航控件,控制器或视图的URL链接的“正确”位置在哪里?如果我把它放在视图中,我不仅要将要显示在当前页面上的数据传递给视图,还要传递给与下一页有关的数据,也就是下一页的页面ID.如果我把它放在控制器中,控制器必须知道特定视图将要显示的导航.这两种方法对我来说都不是很优雅.还有另外一种方法吗? 最佳答案 我不知道是否真的有一种“正确”的方式来做到这一点.以下是我会考虑的一些不同方式:

>如果一个项目页面本身就是系统中的一个对象,那么控制器就有意义了
>如果页面仅存在于视图逻辑中,则视图才有意义
>如果视图收到整个列表,则分页是一种表示概念
>如果您预见到需要不同的页面大小或组织,那么请将逻辑保留在控制器之外

我的直觉说你应该努力保持视图中的所有分页逻辑.这通常意味着您需要某种方式来计算下一页基于视图中当前页面的内容,或者使控制器在结果集中具有某个起点概念.我通常使用后者 – 视图使用可选的起始点检索数据,该起始点是上一页上最​​后一项的ID.这样,分页逻辑在视图中,数据检索很简单.

需要注意的一件事是,如果您键入的项目不再存在,您将如何处理检索下一页数据.换句话说,如果您链​​接说“项目A后面的第一页”和“项目A”已被删除,那么您需要做一些合理的事情.

点赞