Jquery ASP.NET核心中的服务器端分页

Jquery ASP.NET核心中的服务器端分页,jquery,asp.net,ajax,d3.js,pagination,Jquery,Asp.net,Ajax,D3.js,Pagination,我正在尝试实现服务器端分页,以错开要加载到浏览器中的某些数据的加载。这就是我的控制器操作的样子: [Route("api/meteorites")] [HttpGet] public IActionResult GetAll() { var meteories = _context.Meteorites.ToList(); var js = new JavaScriptSerializer {MaxJsonLength = Int32.MaxValue};

我正在尝试实现服务器端分页,以错开要加载到浏览器中的某些数据的加载。这就是我的控制器操作的样子:

[Route("api/meteorites")]
[HttpGet]
public IActionResult GetAll()
  {
      var meteories = _context.Meteorites.ToList();
      var js = new JavaScriptSerializer {MaxJsonLength = Int32.MaxValue};
      return new ObjectResult(js.Serialize(meteories));
  }
var promiseWrapper = (xhr, d) => new Promise(resolve => xhr(d, (p) => resolve(p)));
Promise.all([
    promiseWrapper(d3.json, "StaticFiles/world.geojson"),
    promiseWrapper(d3.json, "api/meteorites")
]).then(resolve => {
    // Set a timer up here to ask for 500 meteorites every ten seconds
        // In your controller action, you are going to need pagination
});
这就是我的Ajax请求的样子:

[Route("api/meteorites")]
[HttpGet]
public IActionResult GetAll()
  {
      var meteories = _context.Meteorites.ToList();
      var js = new JavaScriptSerializer {MaxJsonLength = Int32.MaxValue};
      return new ObjectResult(js.Serialize(meteories));
  }
var promiseWrapper = (xhr, d) => new Promise(resolve => xhr(d, (p) => resolve(p)));
Promise.all([
    promiseWrapper(d3.json, "StaticFiles/world.geojson"),
    promiseWrapper(d3.json, "api/meteorites")
]).then(resolve => {
    // Set a timer up here to ask for 500 meteorites every ten seconds
        // In your controller action, you are going to need pagination
});
请注意,我也在使用D3.js(如果这有区别的话)。
提前谢谢你的帮助

我可以通过将控制器更新为以下内容来解决问题:

[Route("api/meteorites")]
    [HttpGet]
    public IActionResult GetAll(int pageNumber, int pageSize)
    {
        var meteories = _context.Meteorites.OrderBy(x => x.Id).Skip((pageNumber - 1) * pageSize).Take(pageSize).ToList();
        var js = new JavaScriptSerializer {MaxJsonLength = Int32.MaxValue};
        return new ObjectResult(js.Serialize(meteories));
    }
var promiseWrapper = (xhr, d) => new Promise(resolve => xhr(d, (p) => resolve(p)));
var pageNumber = 1;
Promise.all([
    promiseWrapper(d3.json, "StaticFiles/world.geojson"),
    promiseWrapper(d3.json, "api/meteorites?pageNumber=1&pageSize=100")
]).then(resolve => {
    window.setInterval(() => {
        $.ajax({
            url: `api/meteorites?pageNumber=${pageNumber++}&pageSize=100`,
            dataType: "json",
            method: "GET"
        }).done((d) => {
            // Do something with data
        });
    }, 1000);
});
并将我的Ajax调用更新为以下内容:

[Route("api/meteorites")]
    [HttpGet]
    public IActionResult GetAll(int pageNumber, int pageSize)
    {
        var meteories = _context.Meteorites.OrderBy(x => x.Id).Skip((pageNumber - 1) * pageSize).Take(pageSize).ToList();
        var js = new JavaScriptSerializer {MaxJsonLength = Int32.MaxValue};
        return new ObjectResult(js.Serialize(meteories));
    }
var promiseWrapper = (xhr, d) => new Promise(resolve => xhr(d, (p) => resolve(p)));
var pageNumber = 1;
Promise.all([
    promiseWrapper(d3.json, "StaticFiles/world.geojson"),
    promiseWrapper(d3.json, "api/meteorites?pageNumber=1&pageSize=100")
]).then(resolve => {
    window.setInterval(() => {
        $.ajax({
            url: `api/meteorites?pageNumber=${pageNumber++}&pageSize=100`,
            dataType: "json",
            method: "GET"
        }).done((d) => {
            // Do something with data
        });
    }, 1000);
});