Paging in ASP.NET Web API :Using HTTP Headers

 

[Route("", Name = "ObjectRoute")]
[HttpGet]

public async Task<IHttpActionResult> GetListObject(int page = 0, int pageSize = 50, string orderBy = null, bool des = true)
 {

var res = new ObjectListModel();


 try
 {
 //Get list object
 var objects = await _objectService.GetAllAsync();
 if (objcets == null)
 {
 //not create before
 return Ok(res);
 }

var totalCount = res.Result.Count();
 var totalPages = (int)Math.Ceiling((double)totalCount / pageSize);

var urlHelper = new UrlHelper(Request);
 var prevLink = page > 0 ? urlHelper.Link("ObjectRoute", new { page = page - 1 }) : "";
 var nextLink = page < totalPages - 1 ? urlHelper.Link("ObjectRoute", new { page = page + 1 }) : "";

var paginationHeader = new
 {
 TotalCount = totalCount,
 TotalPages = totalPages,
 PrevPageLink = prevLink,
 NextPageLink = nextLink
 };

System.Web.HttpContext.Current.Response.Headers.Add("X-Pagination",
 Newtonsoft.Json.JsonConvert.SerializeObject(paginationHeader));

res.Objects= objects
 .Skip(pageSize * page)
 .Take(pageSize)
 .ToList()
 .Select(a => new Object
 {...}).ToList();
 #region Sort
 res.Objects.SortObjectsList(orderBy.ToLower(), des);
 #endregion
 return Ok(res);
 }
 catch (Exception ex)
 {
 res.ErrorMessages.Add(ex.Message);
 return Ok(res);
 }
 }
Advertisements

Trả lời

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Đăng xuất / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Đăng xuất / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Đăng xuất / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Đăng xuất / Thay đổi )

Connecting to %s