Сортировка и постраничная ASP C#

Я пытаюсь настроить поиск, пейджинг и сортировку в моем приложении ASP.NET MVC5. Я продолжаю получать следующую ошибку... Метод "Пропустить" поддерживается только для отсортированного ввода в LINQ to Entities. Метод 'OrderBy' должен быть вызван перед методом 'Пропустить'. Я следую руководству 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));
    }

1 ответ

Решение

Вы не возвращаете отсортированные данные в return View() линия. Ваш текущий код назначает отсортированные данные user, но затем вы игнорируете это и вместо этого снова вызываете базу данных, чтобы вернуть несортированные данные. Вместо этого измените свой код:

return View(user.ToPagedList(pageNumber, pageSize));
Другие вопросы по тегам