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

时间:2018-08-26 02:39:44

标签: c# asp.net .net asp.net-mvc pagedlist

我想实现一个简单的分页,而PagedList.MVC NuGet包听起来对我来说是最好的解决方案。但是,当我单击生成的按钮以转到第二页,第三页等时,第一页仍处于活动状态,并且所有操作都是刷新第一页,但是我显然希望它导航到预期的页面... 我遵循了这两个教程,看我是否做对了所有事情:

Github

Microsoft

我的控制器:

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 }))
}

我现在试图解决这一问题已有几天,而我得到的最接近的是this question,但是我不确定在哪里可以找到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>

1 个答案:

答案 0 :(得分:0)

由于我解决了这个问题,因此决定在此处发布答案,其他人可能会觉得有用。 因此,在控制器中,我的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