[英]PagedList.MVC - Page buttons(links) don't work as expected
我想实现一个简单的分页,而PagedList.MVC NuGet包听起来对我来说是最好的解决方案。 但是,当我单击生成的按钮以转到第二页,第三页等时,第一页仍处于活动状态,并且所有操作都是刷新第一页,但是我显然希望它导航到预期的页面...我按照以下两个教程来了解我是否做对了所有事情:
我的控制器:
public ActionResult Index(int? pageNumber)
{
var modelList = _employeeService.GetEmployeeViewToPagedList(pageNumber);
return View(modelList);
}
被调用的服务方法(我通常从控制器调用“ ToPagedList()”,但是当前状态是尝试所有操作的结果,并且如果我修改以返回某些内容,则会得到“ DbContext处置”错误的事实就像控制器中的“ View(modelList.ToPagedList(pageNumber,pageSize))”):
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&pageSize=3">2</a></li>
<li><a href="/Play?page=3&pageSize=3">3</a></li>
<li class="PagedList-skipToNext"><a href="/Play?page=2&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 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.