我正在索引页面上的MVC中进行分页..在这一行上,我得到了错误
return View( employee.ToPagedList(Page ?? 1,3));
这是索引方法
public ActionResult Index(string searchBy, string search, int? Page, string sortBy)
{
ViewBag.SortNameParameter = string.IsNullOrEmpty(sortBy) ? "Name desc"
: "";
ViewBag.SortGenderParameter = string.IsNullOrEmpty(sortBy) ? "Gender desc"
: "Gender";
var employee = db.Employees.AsQueryable();
if (searchBy == "Gender")
{
employee = employee.Where(x => x.Gender == search || search == null);
}
else
{
employee = employee.Where(x => x.FUllName .StartsWith(search ) || search == null);
}
switch (sortBy)
{
case "Name desc":
employee = employee.OrderByDescending(x => x.FUllName);
break;
case "Default":
employee = employee.OrderBy(x => x.FUllName);
break;
}
return View( employee.ToPagedList(Page ?? 1,3));
}
我没有使用跳过方法...但是有这个错误:
方法"跳过"仅支持在 LINQ to 中的排序输入 实体。方法"OrderBy"必须在方法之前调用 "跳过"。
我读过类似的帖子
方法"跳过"仅支持在 LINQ to 实体中的排序输入。方法"OrderBy"必须在方法"Skip"之前调用
如何解决"方法'跳过'仅支持用于 LINQ to 实体中的排序输入。
方法"跳过"仅支持在 LINQ to 实体中的排序输入。方法"OrderBy"必须在方法"Skip"之前调用
ASP.NET MVC 3 PagedList。方法"跳过"仅支持在 LINQ to 实体中的排序输入。
并做了以下更改...
1.把员工。其中 switch 语句前的代码:
2.在switch语句中添加默认大小写,并使其抛出。案例"默认": 抛出新的 ArgumentException("error", sortBy);
使用类型 IOrderedQueryable。
智商员工 = db。Employees.AsQueryable();
这并不能解决问题..
大多数情况下,他们使用跳过方法..但我没有...和其他帖子查询很复杂..
请建议缺少什么
你有一个Skip
的方法。
PagedList
为您添加了它。检查代码。这就是分页的工作方式,Take
和Skip
.
另外,我认为您的案例陈述是
switch (sortBy)
{
case "Name desc":
employee = employee.OrderByDescending(x => x.FUllName);
break;
default: // Not: case "Default"
employee = employee.OrderBy(x => x.FUllName);
break;
}
请尝试此代码
var employee = db.Employees.ToList()// Try to change AsQueryable to Ilist or List
if (searchBy == "Gender")
{
employee = employee.Where(x => x.Gender == search || search == null).ToPagedList(Page ?? 1,3);
}
else
{
employee = employee.Where(x => x.FUllName .StartsWith(search ) || search == null).ToPagedList(Page ?? 1,3);
}
switch (sortBy)
{
case "Name desc":
employee = employee.OrderByDescending(x => x.FUllName);
break;
case "Default":
employee = employee.OrderBy(x => x.FUllName);
break;
}
return View( employee);