2016-01-19 3 views
1

Я создал приложение OData локально. и Запрос адрес "http://localhost:5182/odata/Users"Почему мои данные OData возвращают данные «@ odata.type»?

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

Теперь, если я задам ViewModel, возвращаемые данные будут содержать "@ OData.type" Like This:

{ 
"@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», мне просто нужен json для myapp.

Как я могу решить эту проблему? Информация 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; 
Смежные вопросы