如何在使用视图模型时在 mvc 中实现分页列表

本文关键字:mvc 实现 分页 列表 模型 视图 | 更新日期: 2023-09-27 18:36:07

我在 mvc 4 中使用视图模型概念。我正在将数据发布到数据库,并且一旦帖子显示在下面的网格中。 所以我使用了视图模型概念。这是我的模特课

public class MyViewModel
    {
        public document upload_document { get; set; }
        public IList<document> Upload_List { get; set; }
    }

我在文档中有很多字段,所以我不发布字段。我浏览了一些文章,他们返回的内容如下:return View(students.ToList());where student is var.但是我正在所有操作方法中返回模型。也鉴于他们写了

@model PagedList.IPagedList<ContosoUniversity.Models.Student>
@using PagedList.Mvc;  

但我有这个观点

@model c3card.Dal.EDModel.MyViewModel

那么,如何返回包含页码,页面大小的模型?使用视图模型时如何使用此分页列表概念?

如何在使用视图模型时在 mvc 中实现分页列表

如果您需要映射实体以查看模型并且仍然能够分页浏览它们,则需要使用 StaticPagedList .为了使使用 PagedList 的标准方法正常工作,需要向其传递可查询(未评估),以便它可以将查询限制为仅拉取适当数量的记录。但是,如果您要映射到视图模型,则将评估查询。

您需要的是:

public ActionResult Students(int? page)
{
    var pageNumber = page ?? 1;
    var pageSize = 10;
    var totalStudents = db.Students.Count();
    var students = db.Students.Skip((pageNumber - 1) * pageSize).Take(pageSize);
    var model = // map `students` to your view model
    var pagedList = new StaticPagedList<MyViewModel>(model, pageNumber, pageSize, totalStudents);
    return View(pagedList);
}

然后,视图的模型为:

@model PagedList.IPagedList<Namespace.To.MyViewModel>