From e449e16d335a207eebcfddd324b68ccff9f0c078 Mon Sep 17 00:00:00 2001 From: LittleSheep Date: Sat, 22 Nov 2025 17:20:36 +0800 Subject: [PATCH] :bug: Fix pagination overflow in hosted page --- DysonNetwork.Zone/Pages/Posts.cshtml | 55 +++++++++++++++++++++++++++- 1 file changed, 54 insertions(+), 1 deletion(-) diff --git a/DysonNetwork.Zone/Pages/Posts.cshtml b/DysonNetwork.Zone/Pages/Posts.cshtml index 6cec415..f938c8d 100644 --- a/DysonNetwork.Zone/Pages/Posts.cshtml +++ b/DysonNetwork.Zone/Pages/Posts.cshtml @@ -73,7 +73,43 @@ {
- @for (var idx = 1; idx <= Model.TotalPages; idx++) + @{ + var maxPagesToShow = 5; // e.g., 2 before, current, 2 after + var startPage = Math.Max(1, Model.CurrentPage - (maxPagesToShow / 2)); + var endPage = Math.Min(Model.TotalPages, Model.CurrentPage + (maxPagesToShow / 2)); + + // Adjust startPage and endPage to ensure exactly maxPagesToShow are shown if possible + if (endPage - startPage + 1 < maxPagesToShow) + { + if (startPage == 1) + { + endPage = Math.Min(Model.TotalPages, startPage + maxPagesToShow - 1); + } + else if (endPage == Model.TotalPages) + { + startPage = Math.Max(1, endPage - maxPagesToShow + 1); + } + } + } + + « + + @if (startPage > 1) + { + + 1 + + @if (startPage > 2) + { + ... + } + } + + @for (var idx = startPage; idx <= endPage; idx++) { var pageIdx = idx; } + + @if (endPage < Model.TotalPages) + { + @if (endPage < Model.TotalPages - 1) + { + ... + } + + @Model.TotalPages + + } + + »
}