我正在使用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。但我似乎无法解决它。可能导致这种情况以及如何解决这个问题?希望你们能提出任何建议。提前谢谢!
答案 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。同时尝试重建项目并检查是否显示任何其他错误