- @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
+
+ }
+
+
»