У меня есть проект ASP.NET MVC 4 и SQL View (vvItem). ItemController
    MVCAppEntities db = new MVCAppEntities();
    public ActionResult Index()
    {
        var itemqry = db.vvItem.OrderBy(s => s.name);
        //var pageditems = itemqry.Skip(10).Take(20); // 25 seconds
        return View(itemqry.ToList()); // 88 seconds
    }
Index.cshtml Просмотр
@model IEnumerable<MVCApplication1.Models.vvItem>
@{
    var norows = 20;
    var grid = new WebGrid(Model, canPage: true, rowsPerPage: norows);
    grid.Pager(WebGridPagerModes.NextPrevious);  
    @grid.GetHtml(tableStyle: "table",  headerStyle: "header", columns: grid.Columns(
          grid.Column(columnName: "name", header: "Name", canSort: true),
          grid.Column(columnName: "quantity", header: "Quantity", canSort: true),  
          grid.Column(columnName: "code", header: "Code", canSort: true),
          grid.Column(columnName: "Price", header: "Price", canSort: true),
          ))}
В vvItem у меня почти 400000 записей. Я думал, что пейджер webgrid загрузит (Take()) только отображаемые записи, и он будет знать, что Skip() первые записи, если я перейду на следующие страницы.
Q: как я могу эффективно просматривать только отображаемые записи?
Я нашел 2 решения: версия JSON и NerdDinner
Я не так хорошо разбираюсь в JSON, поэтому я попробовал решение NerdDinner. И как в моей прокомментированной строке
//var pageditems = itemqry.Skip(10).Take(20); itemqry уже загружен всеми записями и потребовалось много времени для загрузки.
Q2: Как я могу сделать paging сейчас? Мне нужно изменить страницу №. из метода Index.
public ActionResult Index(int? page, string filter1 = " ", string filter2 = " ")
