我正在尝试通过在每个页面的顶部显示 10 个数字来向网站添加分页。我写这段代码来生成对应于每个页面的 10 个数字
@for (int i = (Math.Ceiling( page / 10 - 1) * 10 ) + 1; i <= Math.Ceiling( page / 10 - 1) * 10 + 10 ; i++)
{
@Html.ActionLink(i.ToString(), "ShowItems", page = i.ToString() })
@Html.Raw(",");
}
除结尾外,一切正常。例如如果我有 12 页,分页将显示
1 2 3 4 5 6 7 8 9 10
对于 1-10 之间的所有页面,然后将显示
11 12 13 14 15 16 17 18 19 20
对于第 11 和 12 页。
我需要将我的循环更改为在最后一页停止计数器的内容。
有什么想法吗?
谢谢!
P.S 我不想使用 PagedList
,因为我正在处理大量数据并且无法一次加载它。
最佳答案
首先,我建议您先将“开始”和“结束”部分提取到局部变量中。它将使调试变得很多。因此,您现有的代码将变为(暂时忽略 Razor 语法):
int startPage = (Math.Ceiling(page / 10 - 1) * 10) + 1;
int endPage = Math.Ceiling(page / 10 - 1) * 10 + 10;
for (int i = startPage; i <= endPage; i++)
然后我会提取使用您已经完成计算 endPage
的大部分工作来计算 startPage
的事实:
int startPage = (Math.Ceiling(page / 10 - 1) * 10) + 1;
int endPage = startPage + 9;
for (int i = startPage; i <= endPage; i++)
现在您只需要将其限制为页数即可:
int startPage = (Math.Ceiling(page / 10 - 1) * 10) + 1;
int endPage = Math.Min(startPage + 9, totalPages);
for (int i = startPage; i <= endPage; i++)
关于c# - 生成网页的页码列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16924699/