コード例 #1
0
        public OkActionResultWithPagingHeaders(string routename, HttpResponseMessage response, int page, int pagesize, int pagecount, int totalcount)
        {
            this.response       = response;
            response.StatusCode = HttpStatusCode.OK;

            var requestparams = response.RequestMessage.GetQueryNameValuePairs();
            var parameters    = new HttpRouteValueDictionary();

            foreach (KeyValuePair <string, string> kvp in requestparams)
            {
                parameters.Add(kvp.Key, kvp.Value);
            }

            var helper = new UrlHelper(response.RequestMessage);

            if (!parameters.Any(x => x.Key == "page"))
            {
                parameters.Add("page", page - 1);
            }
            else
            {
                parameters["page"] = page - 1;
            }
            var prevUrl = page > 0 ? helper.Link(routename, parameters) : "";

            parameters["page"] = page + 1;
            var nextUrl = page < pagecount - 1 ? helper.Link(routename, parameters) : "";

            response.Headers.Add("X-Paging-PageNo", page.ToString());
            response.Headers.Add("X-Paging-PageSize", pagesize.ToString());
            response.Headers.Add("X-Paging-PageCount", pagecount.ToString());
            response.Headers.Add("X-Paging-TotalRecordCount", totalcount.ToString());
            response.Headers.Add("X-Paging-PrevPage", prevUrl);
            response.Headers.Add("X-Paging-NextPage", nextUrl);
        }