Asp Core,如何创建分页?

2024-02-29

我想用PagingList<T>.CreateAsync()在索引视图中创建 PagedList 但出现以下错误var modelPaging = await PagingList<UserListViewModel>.CreateAsync(model, 10, page);:

无法从 system.collection.Generic.List 转换为 system.linq.IorderedQueryable

我的操作代码:

    [HttpGet]
    public async Task<IActionResult> Index(int page = 1)
    {

        List<UserListViewModel> model = new List<UserListViewModel>();
        model = _userManager.Users.AsNoTracking().Select(u => new UserListViewModel
        {
            Id = u.Id,
            FullName = u.FirstName + " " + u.LastName,
            Email = u.Email
        }).OrderBy(u => u.Id).ToList();
        var modelPaging = await PagingList<UserListViewModel>.CreateAsync(model, 10, page);

        return View(modelPaging);
    }

和 UserListViewModel 视图模型:

public class UserListViewModel
{

    public string Id { get; set; }

    public string FullName { get; set; }

    public string Email { get; set; }

    public string RoleName { get; set; }

}

我应该对我的代码进行哪些更改?

我在这里问了关于这个主题的另一个问题link https://stackoverflow.com/questions/48350710/asp-core-how-to-use-paginglistt-createasync-with-a-viewmodel/48354828#48354828


该错误非常清楚地告诉你CreateAsync needs IOrderedQueryable但您给出的是已经从数据库检索到的数据。您应该传递查询本身。消除ToList;

var query = _userManager.Users.AsNoTracking().Select(u => new UserListViewModel
{
    Id = u.Id,
    FullName = u.FirstName + " " + u.LastName,
    Email = u.Email
}).OrderBy(u => u.Id);
var modelPaging = await PagingList<UserListViewModel>.CreateAsync(query, 10, page);

主要目的PagingList直接从数据库而不是内存中应用分页。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Asp Core,如何创建分页? 的相关文章

随机推荐