排序和分页 ASP C#
Sorted and Paged ASP C#
我正在尝试在我的 ASP.NET MVC5 应用程序中设置搜索、分页和排序。我不断收到以下错误...方法 'Skip' 仅支持 LINQ to Entities 中的排序输入。方法 'OrderBy' 必须在方法 'Skip' 之前调用。我正在遵循 Microsoft 指南...(http://www.asp.net/mvc/overview/getting-started/getting-started-with-ef-using-mvc/sorting-filtering-and-paging-with-the-entity-framework-in-an-asp-net-mvc-application)
我错过了什么?看起来很简单。
public class npsAAA_dataController : Controller
{
private npsAAAEntities db = new npsAAAEntities();
// GET: npsAAA_data
public ActionResult Index(string sortOrder, string currentFilter, string searchString, int? page)
{
ViewBag.CurrentSort = sortOrder;
ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? "name_desc" : "";
ViewBag.DateSortParm = sortOrder == "Date" ? "date_desc" : "Date";
if (searchString != null)
page = 1;
else
searchString = currentFilter;
ViewBag.CurrentFilter = searchString;
var user = from s in db.accounting_data select s;
if(!String.IsNullOrEmpty(searchString))
{
user = user.Where(s => s.User_Name.Contains(searchString));
}
switch(sortOrder)
{
case "name_desc":
user = user.OrderByDescending(s => s.User_Name);
break;
case "Date":
user = user.OrderBy(s => s.timestamp);
break;
case "date_desc":
user = user.OrderByDescending(s => s.timestamp);
break;
default:
user = user.OrderBy(s => s.User_Name);
break;
}
int pageSize = 10;
int pageNumber = (page ?? 1);
return View(db.accounting_data.ToPagedList(pageNumber,pageSize));
}
您没有在 return View()
行中 return 排序数据。您当前的代码正在将已排序的数据分配给 user
,但随后您忽略了它,而是再次调用数据库以获取 return 未排序的数据。将您的代码改为:
return View(user.ToPagedList(pageNumber, pageSize));
我正在尝试在我的 ASP.NET MVC5 应用程序中设置搜索、分页和排序。我不断收到以下错误...方法 'Skip' 仅支持 LINQ to Entities 中的排序输入。方法 'OrderBy' 必须在方法 'Skip' 之前调用。我正在遵循 Microsoft 指南...(http://www.asp.net/mvc/overview/getting-started/getting-started-with-ef-using-mvc/sorting-filtering-and-paging-with-the-entity-framework-in-an-asp-net-mvc-application)
我错过了什么?看起来很简单。
public class npsAAA_dataController : Controller
{
private npsAAAEntities db = new npsAAAEntities();
// GET: npsAAA_data
public ActionResult Index(string sortOrder, string currentFilter, string searchString, int? page)
{
ViewBag.CurrentSort = sortOrder;
ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? "name_desc" : "";
ViewBag.DateSortParm = sortOrder == "Date" ? "date_desc" : "Date";
if (searchString != null)
page = 1;
else
searchString = currentFilter;
ViewBag.CurrentFilter = searchString;
var user = from s in db.accounting_data select s;
if(!String.IsNullOrEmpty(searchString))
{
user = user.Where(s => s.User_Name.Contains(searchString));
}
switch(sortOrder)
{
case "name_desc":
user = user.OrderByDescending(s => s.User_Name);
break;
case "Date":
user = user.OrderBy(s => s.timestamp);
break;
case "date_desc":
user = user.OrderByDescending(s => s.timestamp);
break;
default:
user = user.OrderBy(s => s.User_Name);
break;
}
int pageSize = 10;
int pageNumber = (page ?? 1);
return View(db.accounting_data.ToPagedList(pageNumber,pageSize));
}
您没有在 return View()
行中 return 排序数据。您当前的代码正在将已排序的数据分配给 user
,但随后您忽略了它,而是再次调用数据库以获取 return 未排序的数据。将您的代码改为:
return View(user.ToPagedList(pageNumber, pageSize));