列表不包含'ToPagedList'的定义

时间:2015-08-11 17:43:11

标签: c# asp.net-mvc namespaces nuget-package pagedlist

我正在使用PagedList.Mvc NuGet包进行分页,在一个视图中,一切看起来都非常好但在我的控制器中发生此错误

'System.Collections.Generic.List<CreateSocial.Models.UserProfiles>' does not contain a definition for 'ToPagedList' and no extension method 'ToPagedList' accepting a first argument of type 'System.Collections.Generic.List<CreateSocial.Models.UserProfiles>' could be found (are you missing a using directive or an assembly reference?)

即使我将命名空间定义为:

using PagedList;
using PagedList.Mvc;

我的代码看起来像这样:

[HttpGet]
public ActionResult Results(SearchViewModel svm, int CurrentPage)
{
    const int ResultsPerPage = 50;
    List<UserProfiles> results = db.UserProfiles.Where(w => w.FirstName.Contains(svm.SearchStr) || w.LastName.Contains(svm.SearchStr)).ToList();

    return View(results.ToPagedList(CurrentPage, ResultsPerPage));
}

我尝试通过Package Manager Console再次删除并添加PagedList。但我似乎无法解决它。可能导致这种情况以及如何解决这个问题?希望你们能提出任何建议。提前谢谢!

2 个答案:

答案 0 :(得分:3)

您可能错过了“使用xxxxxx”命名空间。

使用PagedList;

这些通常是“扩展方法”......虽然它们扩展了一些你可能已经拥有“using”语句的东西......扩展方法本身可能在另一个命名空间中(因此需要额外的“使用“声明”。

APPEND

您提到“我尝试通过程序包管理器控制台再次删除并添加PagedList”

执行此操作时,目标项目会有一个下拉框。确保您在下拉框中列出了正确的csproj。

要确定您有参考,请在记事本或记事本++中打开您的proj文件(csproj)并查找参考。

答案 1 :(得分:2)

首先不要使用ToList()! 如果您在数据库中有10.000条记录,它将首先将它们加载到内存中,然后执行方法ToPagedList

如果您查看pagedlist扩展定义,那么您将看到您也可以使用iqueryable

    // Summary:
    //     Creates a subset of this collection of objects that can be individually accessed
    //     by index and containing metadata about the collection of objects the subset
    //     was created from.
    //
    // Parameters:
    //   superset:
    //     The collection of objects to be divided into subsets. If the collection implements
    //     System.Linq.IQueryable<T>, it will be treated as such.
    //
    //   pageNumber:
    //     The one-based index of the subset of objects to be contained by this instance.
    //
    //   pageSize:
    //     The maximum size of any individual subset.
    //
    // Type parameters:
    //   T:
    //     The type of object the collection should contain.
    //
    // Returns:
    //     A subset of this collection of objects that can be individually accessed
    //     by index and containing metadata about the collection of objects the subset
    //     was created from.
public static IPagedList<T> ToPagedList<T>(this IQueryable<T> superset, int pageNumber, int pageSize);

关于您的问题,请检查您是否引用了pagedlist和pagedlist.mvc。同时尝试重建项目并检查是否显示任何其他错误