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