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

How to implement pagedlist in mvc when using view models?

我在 mvc 4 中使用 viewmodel 概念。我正在 post 将数据发送到数据库,并且 post 也会在下面的网格中显示。所以我使用了视图模型概念。这是我的模型 class

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

    }

我在文档中有很多字段,所以我没有 posting 字段。我浏览了一些文章,它们 return 是这样的:return View(students.ToList());where student is var。但我 returning 模仿了所有的动作方法。另外鉴于他们已经写了

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

但我有这个看法

@model c3card.Dal.EDModel.MyViewModel

那么,return模型如何包含pagenum,page size呢?使用视图模型时如何使用此分页列表概念?

如果您需要将您的实体映射到视图模型并且仍然能够通过它们进行分页,那么您需要使用 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>