5

如何在基于 ASP MVC 和 ViewModels 的 Web 应用程序中使用 PagedList。

我想制作一个 Viewmodels 的 PagedList,所以首先我必须将实体映射到 Viewmodels。

当我获取一个大列表时,它非常慢,因为首先在 PagedList 生成之前执行映射(因此获取整个实体列表)。

解决此问题的最佳方法是什么?

IEnumerable<InvoiceData> invoiceData = dataService.GetInvoiceData(locationId);

Mapper.CreateMap<InvoiceData, ViewModelInvoiceData>();
IEnumerable<ViewModelInvoiceData> vmInvoiceData = Mapper.Map<IEnumerable<InvoiceData>, IEnumerable<ViewModelInvoiceData>>(invoiceData);

IPagedList<InvoiceDataViewModel> pagedListVMInvoiceData = vmInvoiceData.ToPagedList(page, pageSize);

(我也使用了映射框架,但自定义映射器类当然是同样的问题)

4

2 回答 2

1

为什么你没有在服务器上分页你的数据?然后像troygoode / PagedList中的示例 2 那样创建手动寻呼机?

于 2013-11-16T10:41:42.887 回答
0

我遇到过同样的问题。我通过使用 IQueryable 接口而不是 IEnumerable 加快了我的结果(它们仍然不是那么快,但更快)

改变这个:

IEnumerable<InvoiceData> invoiceData = dataService.GetInvoiceData(locationId);

对此:

IQueryable<InvoiceData> invoiceData = dataService.GetInvoiceData(locationId);
于 2015-04-08T16:14:57.610 回答