2016-01-19 28 views
1

我在本地创建了一个OData应用程序。 与上述请求地址是 “http://localhost:5182/odata/Users为什么我的OData返回数据包含“@ odata.type”?

[EnableQuery] 
    public IHttpActionResult GetUsers() 
    { 
     var result = userService.GetQueryable().ProjectTo<UserModel>(); 
     return Ok(result); 
    } 

现在,如果我问视图模型,返回的数据将包含 “@ OData.type” 这样的:

{ 
"@odata.context": "http://localhost:5182/odata/$metadata#Users/MyApp.WebApiOData.Models.UserModel", 
"value": [ 
    { 
     "@odata.type": "#MyApp.WebApiOData.Models.UserModel", 
     "Id": 1, 
     "Name": "admin", 
     "PhoneNumber": null 
    }, 
    { 
     "@odata.type": "#MyApp.WebApiOData.Models.UserModel", 
     "Id": 2, 
     "Name": "mapley", 
     "PhoneNumber": null 
    } 

}

如果我不是要求ViewModel,则返回的数据将如下所示:

{ 
"@odata.context": "http://localhost:5182/odata/$metadata#Users", 
"value": [ 
    { 
     "Name": "admin", 
     "Pwd": "123456", 
     "RealName": null, 
     "Sex": null,... 

我不想返回包含“@ OData.type”的结果,并且Url地址包含“MyApp.WebApiOData.Models”,我只需要用于myapp的json。

我该如何解决这个问题? 这方面的OData信息太小了,我的英文不好。 而我不明白“@ odata.type”usedfor。

如果你能给我一点帮助,我会永远感激。

回答

0

odata.type是你的请求资源的namespace.typename,删除此响应添加页眉中请求可以解决此问题:

HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, queryUrl); 
request.Headers.Accept.Add(MediaTypeWithQualityHeaderValue.Parse("application/json;odata.metadata=none"));     
HttpClient client = new HttpClient(); 
HttpResponseMessage response = client.SendAsync(request).Result; 
相关问题