2013-08-25 10 views
8

私の質問は、に似てマッピングされていないinlinecountのWeb APIのODataのは

<packages> 
    <package id="Microsoft.AspNet.Cors" version="5.0.0-rc1" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.WebApi.Client" version="5.0.0-rc1" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.WebApi.Core" version="5.0.0-rc1" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.WebApi.Cors" version="5.0.0-rc1" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.WebApi.OData" version="5.0.0-rc1" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.WebApi.SelfHost" version="5.0.0-rc1" targetFramework="net45" /> 
    <package id="Microsoft.Data.Edm" version="5.6.0" targetFramework="net45" /> 
    <package id="Microsoft.Data.OData" version="5.6.0" targetFramework="net45" /> 
    <package id="Newtonsoft.Json" version="5.0.6" targetFramework="net45" /> 
    <package id="System.Spatial" version="5.6.0" targetFramework="net45" /> 
</packages> 

APIがCORSでselfhostedと有効ルーティング属性れます。

// used for development purpose only 
var cors = new EnableCorsAttribute("*", "*", "*"); 
config.EnableCors(cors); 

// enables attribute routing 
config.MapHttpAttributeRoutes(); 

ProductControllerの方法GetAllProducts:

[Queryable] 
[HttpGet("products")] 
public PageResult<ProductViewModel> GetAllProducts(ODataQueryOptions<ProductViewModel> options) 
{ 
    //return products.AsQueryable(); 
    ODataQuerySettings settings = new ODataQuerySettings() 
    { 
     PageSize = 2 
    }; 

    IQueryable results = options.ApplyTo(products.AsQueryable(), settings); 

    Uri uri = Request.GetNextPageLink(); 
    long? inlineCount = Request.GetInlineCount(); 

    PageResult<ProductViewModel> response = new PageResult<ProductViewModel>(
     results as IEnumerable<ProductViewModel>, 
     uri, 
     inlineCount); 

    return response; 
} 

次のように

http://localhost/api/products 

を照会することによって出力される。

http://localhost/api/products

私は次のように$ inlinecount =全ページ

http://localhost/api/products?$inlinecount=allpages 

を照会することによって出力された追加てる場合:?

http://localhost/api/products?$inlinecount=allpages

URIと、カウントをデバッグ時には、適切に設定されていますが、JSONにマッピングされていません応答:私は欠けている何

enter image description here

答えて

9

私の間違いが見つかりました。属性[Queryable]を削除することでうまくいきます。

[HttpGet("products")] 
public PageResult<ProductViewModel> GetAllProducts(ODataQueryOptions<ProductViewModel> options) 
関連する問題