Я тестировал ваш код на своем образце, вроде у меня все работает хорошо. Я думаю, что проблема связана со ссылками на страницы на странице просмотра. Пожалуйста, проверьте правильность URL ссылки и номера страницы.
Вы также можете сослаться на следующий пример кода:
Код в контроллере:
public IActionResult EmployeeIndex(int? pageNumber, int? CurrentPage)
{
int pageSize = 3;
if(CurrentPage != null)
{
pageNumber = CurrentPage;
ViewBag.CurrentPage = CurrentPage;
}
return View(Pagination<Employee>.CreateAsync(GetEmployee().AsQueryable<Employee>(), pageNumber ?? 1, pageSize));
}
Код в Страница просмотра:
@model Pagination<MVCSample.Models.Employee>
<table class="table">
...table content...
</table>
@{
var prevDisabled = !Model.HasPreviousPage ? "disabled" : "";
var nextDisabled = !Model.HasNextPage ? "disabled" : "";
}
<ul class="pagination">
<li>
<a asp-action="EmployeeIndex"
asp-route-pageNumber="@(Model.PageIndex - 1)"
class="btn btn-default @prevDisabled">
Previous
</a>
</li>c
@for (var i = 1; i <= Model.TotalPages; i++)
{
<li class="page-item @(i == ViewBag.CurrentPage ? "active" : "")">
<a asp-action="EmployeeIndex" asp-route-currentpage="@i" class="page-link">@i</a>
</li>
}
<li>
<a asp-action="EmployeeIndex"
asp-route-pageNumber="@(Model.PageIndex + 1)"
class="btn btn-default @nextDisabled">
Next
</a>
</li>
</ul>
Пожалуйста, проверьте метод действия, вы можете изменить его на свои собственные.
Код в Pagination.cs (на основе вашего кода я просто добавляю свойство CurrentPage для отображения номера текущей страницы):
public class Pagination<T>:List<T>
{
[BindProperty(SupportsGet = true)]
public int CurrentPage { get; set; } = 1
....
}
Результат примерно такой:
введите описание изображения здесь