【问题标题】:Server side pagination in ASP.NET CoreASP.NET Core 中的服务器端分页
【发布时间】:2017-06-13 17:45:12
【问题描述】:

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

[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));
  }

这就是我的 Ajax 请求的样子:

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(如果有区别的话)。 提前感谢您的帮助!

【问题讨论】:

    标签: jquery asp.net ajax d3.js pagination


    【解决方案1】:

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

    [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));
        }
    

    并将我的 Ajax 调用更新为以下内容:

    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);
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-12
      • 2019-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-04
      相关资源
      最近更新 更多