Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

WebApi with Odata NextPage and Count not appearing in the JSON response

I have a webapi method that I want to switch oData paging etc on. I followed the example in http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api/supporting-odata-query-options

My method looks like:

public PageResult<UserViewModel> GetUsers(ODataQueryOptions<UserViewModel> options)
{
    var settings = new ODataQuerySettings()
    {
        PageSize = 2
    };

    var results = UserLogic.GetUsers(userId, UserManager, _db);
    var filtered = options.ApplyTo(results, settings);

    var pagedResult = new PageResult<UserViewModel>(
        filtered as IEnumerable<UserViewModel>,
        Request.GetNextPageLink(),
        Request.GetInlineCount());
    return pagedResult;
}  

That the count is populated and the next page link is there and the correct oData options are applied i.e. sort order etc. When I return it in my api method, the correct data comes back, but the count and next link don't appear in my json.

Am I missing a setting to turn this on?

i.e. this is my json response:

HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Server: Microsoft-IIS/8.0
X-RequestID: b215962b-6a4a-431d-9850-7ecbf808538e
X-AspNet-Version: 4.0.30319
X-SourceFiles: =?UTF-8?B?QzpcUmVwb3NpdG9yaWVzXEdpdEh1YlxxbGRyYS1wb3J0YWxccWxkcmEtcG9ydGFsLldlYlxxbGRyYS5iYXNlbGluZS5hcGlcYXBpXHVzZXJz?=
X-Powered-By: ASP.NET
Date: Fri, 04 Apr 2014 05:16:53 GMT
Content-Length: 554

[
  {
    "Id": "500e6f96-b2bd-48d9-8181-5bbc39c673f6",
    "UserName": "[email protected]",
    "Organisation": {
      "Id": "f179bc35-89b8-e311-9dfd-0050569b4cee",
      "Name": "Black and White Cabs Pty Ltd",
      "IsActive": true,
      "LastUpdatedDate": "2014-04-03T11:35:26.167"
    },
    "IsLockedOut": false,
    "Roles": []
  },
  {
    "Id": "0d661d1b-9e52-4f2f-baec-3eb89197bb6d",
    "UserName": "[email protected]",
    "Organisation": null,
    "IsLockedOut": false,
    "Roles": [
      "Service Administrator"
    ]
  }
]
like image 692
BronwenZ Avatar asked Oct 20 '22 11:10

BronwenZ


1 Answers

This should work.

Be sure to remove the [EnableQuery] attribute if it is being applied to your method or controller. This will cause the returned JSON to not include the count and next link.

like image 149
amayer171292591 Avatar answered Oct 23 '22 01:10

amayer171292591