Asp.net core X.PagedList、手动分页和预先存在的用于数据的webapi一次只能前进1条记录

Asp.net core X.PagedList、手动分页和预先存在的用于数据的webapi一次只能前进1条记录,asp.net-core,paging,pagedlist,Asp.net Core,Paging,Pagedlist,针对已存在的webapi在.netcore中设置页面列表 webapi允许我使用两个参数调用数据,一个是FROM,一个是TAKE。我已经实现了X.PagedList,除了它/我如何计算实际页面之外,它似乎还能工作 使用at的代码,我实现了手动分页。问题是,当我点击一个页码时,我的TAKE只获得1条新记录,而不是下一条10条 在第一次加载时,我的api调用如下所示 /api/v1/机构?起始值=0,取数=10 第2页调用看起来像 /api/v1/机构?从=1开始,取=10 显然,我认为在这种情况下

针对已存在的webapi在.netcore中设置页面列表

webapi允许我使用两个参数调用数据,一个是FROM,一个是TAKE。我已经实现了X.PagedList,除了它/我如何计算实际页面之外,它似乎还能工作

使用at的代码,我实现了手动分页。问题是,当我点击一个页码时,我的TAKE只获得1条新记录,而不是下一条10条

在第一次加载时,我的api调用如下所示

/api/v1/机构?起始值=0,取数=10

第2页调用看起来像

/api/v1/机构?从=1开始,取=10

显然,我认为在这种情况下,1应该是11

PagedResults类

我的控制器

获取列表

我的看法


下面是一个简单的解决方法,如下所示:

1.意见:

@{
    ViewBag.Title = "Product Listing";
    var pagedList = (IPagedList)ViewBag.PageList;
}
@using X.PagedList.Mvc.Core; @*import this so we get our HTML Helper*@
@using X.PagedList; @*import this so we can cast our list to IPagedList (only necessary because ViewBag is dynamic)*@
@using X.PagedList.Mvc.Common
@using X.PagedList.Mvc.Core.Fluent
<ul>
    @foreach (var name in ViewBag.PageList)
    {
        <li>@name</li>
    }
</ul>
@Html.PagedListPager(pagedList, page => Url.Action("Index", new { page }))
2.控制员:

[HttpGet]
    public IActionResult Index(int page = 1)
    {
        ViewBag.PageList = GetPagedNames(page);
        return View();
    }

    protected IPagedList<string> GetPagedNames(int? page)
    {
        // return a 404 if user browses to before the first page
        if (page.HasValue && page < 1)
            return null;
        // retrieve list from database/wherever
        var listUnpaged = new List<string> { "a", "b", "c", "d", "e", "aa", "bb", "cc", "dd", "ee", "aaa", "bbb", "ccc" ,"ddd","eee","fff","ggg","1","s","f","sd","dsfds"};
        // page the list
        const int pageSize = 10;
        var listPaged = listUnpaged.ToPagedList(page ?? 1, pageSize);
        // return a 404 if user browses to pages beyond last page. special case first page if no items exist
        if (listPaged.PageNumber != 1 && page.HasValue && page > listPaged.PageCount)
            return null;
        return listPaged;
    }

我无法重现您的问题。您的GetList方法是什么?您是如何获得当前用户的?你是怎么使用PagedResults的?真不敢相信我忘了添加GetList函数。编辑和添加。currentuser来自基类,与基类无关。PagedList在foreach中用于构建表和分页机制。不幸的是,它总是只返回一个10的记录集,因此只有1个pageHi@Tim Cadieux,您是否使用我的代码进行了测试?您认为它只有一个页面,因为您看到了public IActionResult Indexint page=1?如果是,我建议你可以试试。我已经成功地完成了分页。我已经完成了,但是我不确定它对我有什么帮助,因为我不认为它是一个正确的分页列表。原因是代码的编写方式,每次调用都会抓取5000条记录,然后返回一个页面列表。这似乎效率很低,与我的努力背道而驰。我只想在每次调用中返回必要的10条记录,只需根据请求向前或向后移动光标。这有意义吗?您好@TimCadieux,您的想法有意义。我的代码实际上返回了必要的10条记录。您可以设置断点并进行调试。您会发现,每次选择页面时,它都只返回此行中必要的10条记录:var listPaged=listUnpaged.ToPagedListpage??1、页面大小;
#region Helpers

public static IRestResponse<List<Models.Institution>> GetList(int from, int take)
{
    //this create /api/v1/institutions?from=0&Take=10
    string ActionPath = string.Format("Institutions");

    var client = new RestClient(Connect.url);
    var request = new RestRequest(ActionPath, Method.GET);
    request.AddParameter("from", from, ParameterType.QueryString);
    request.AddParameter("take", take, ParameterType.QueryString);

    var result = client.Execute<List<Models.Institution>>(request);

    return result;
}

#endregion
@using X.PagedList.Mvc.Core; 
@using X.PagedList; 

@foreach (var item in ViewBag.PagedList)
{
    <tr>
        <td>@item.id</td>
        <td>@item.name</td>
    </tr>
}

 @Html.PagedListPager((IPagedList)ViewBag.PagedList, page => Url.Action("PagedList", new { page }))
@{
    ViewBag.Title = "Product Listing";
    var pagedList = (IPagedList)ViewBag.PageList;
}
@using X.PagedList.Mvc.Core; @*import this so we get our HTML Helper*@
@using X.PagedList; @*import this so we can cast our list to IPagedList (only necessary because ViewBag is dynamic)*@
@using X.PagedList.Mvc.Common
@using X.PagedList.Mvc.Core.Fluent
<ul>
    @foreach (var name in ViewBag.PageList)
    {
        <li>@name</li>
    }
</ul>
@Html.PagedListPager(pagedList, page => Url.Action("Index", new { page }))
[HttpGet]
    public IActionResult Index(int page = 1)
    {
        ViewBag.PageList = GetPagedNames(page);
        return View();
    }

    protected IPagedList<string> GetPagedNames(int? page)
    {
        // return a 404 if user browses to before the first page
        if (page.HasValue && page < 1)
            return null;
        // retrieve list from database/wherever
        var listUnpaged = new List<string> { "a", "b", "c", "d", "e", "aa", "bb", "cc", "dd", "ee", "aaa", "bbb", "ccc" ,"ddd","eee","fff","ggg","1","s","f","sd","dsfds"};
        // page the list
        const int pageSize = 10;
        var listPaged = listUnpaged.ToPagedList(page ?? 1, pageSize);
        // return a 404 if user browses to pages beyond last page. special case first page if no items exist
        if (listPaged.PageNumber != 1 && page.HasValue && page > listPaged.PageCount)
            return null;
        return listPaged;
    }