PagedList.MVC - 页面按钮(链接)无法按预期工作



我想实现一个简单的分页,PagedList.MVC NuGet包听起来像是我的最佳解决方案。但是,当我单击生成的按钮转到第 2 页、第 3 页等时,第 1 页保持活动状态,而发生的一切只是刷新第一页,但我显然希望它导航到预期的页面...... 我按照这两个教程进行操作,看看我是否做对了一切:

Github

Microsoft

我的控制器:

public ActionResult Index(int? pageNumber)
{         
var modelList = _employeeService.GetEmployeeViewToPagedList(pageNumber);
return View(modelList);
}

被调用的服务方法(我知道"ToPagedList(("通常是从控制器调用的,但当前状态是尝试所有内容的结果,如果我修改为从控制器返回类似"View(modelList.ToPagedList(pageNumber, pageSize(("之类的内容,我会收到"DbContext disposed"错误(:

public IPagedList<EmployeeView> GetEmployeeViewToPagedList(int? pageNumber)
{
using (var _unitOfWork = UnitOfWork.GetUnitOfWork())
{
var list = (IQueryable<EmployeeView>)_unitOfWork.context.EmployeeViews.OrderByDescending(x => x.Id);
return list.ToPagedList((pageNumber ?? 1), 10);
}
}

我的观点:

@model PagedList.IPagedList<Company.DAL.Views.EmployeeView>
@using PagedList.Mvc;
<link href="~/Content/PagedList.css" rel="stylesheet" type="text/css" />
@{
ViewBag.Title = "Index";
}
<h2>List of all employees</h2>
<p>
@Html.ActionLink("Add new employee", "AddNewEmployee")
</p>
@if (Model != null && Model.Count() > 0)
{
<table class="table">
... all needed <tr>'s, <th>'s, <td>'s ...
</table>
<br/>
@Html.PagedListPager(Model, page => Url.Action("Index", new { page, pageSize = 
Model.PageSize }))
}

我几天来一直在试图解决这个问题,我得到的最接近的是这个问题,但我不确定在哪里可以找到 JS 函数,所以我也可以尝试一下。

编辑: 生成的 HTML:

<div class="pagination-container">
<ul class="pagination">
<li class="active"><a>1</a></li>
<li><a href="/Play?page=2&amp;pageSize=3">2</a></li>
<li><a href="/Play?page=3&amp;pageSize=3">3</a></li>
<li class="PagedList-skipToNext"><a href="/Play?page=2&amp;pageSize=3" rel="next">»</a></li>
</ul>
</div>

我决定在这里发布一个答案,因为我解决了这个问题,其他人可能会觉得这很有用。 因此,在控制器中,我的 Index 方法如下所示:

public ActionResult Index(int? pageNumber)
{     
//some logic
}

如您所见,它接受一个名为pageNumber的 int 变量作为参数。 但在我看来是这样的:

@Html.PagedListPager(Model, page => Url.Action("Index", new { page, pageSize = Model.PageSize }))

所以,在这里我将一个名为page的变量传递给我的 Index 方法。 这就是错误!方法参数列表中的变量也必须命名为 page

最新更新