У нас есть контроллер, который ожидает некоторые параметры в маршруте получения, но функции OData, такие как $top
, не работают.
Согласно документам , он (пользовательские параметры запроса) должен работать нормально, просто объявляя префикс @
в пользовательских параметрах, но это не так:
- Используя
@
в качестве префикса (как предложено в документации), параметр filtro
не заполняется и получает значения по умолчанию для всех его свойств.
- Без префикса он не возвращает ошибку, но функция
$top
игнорируется, и я получаю слишком много записей, чтобы показать (2K +).
Здесь есть еще один ответ на SO на нечто подобное , но мы используем OData V3, у которой нет явных построителей моделей Edm, это вывод.
Ребята, вы решили такую проблему?
Вот мой код:
GET Запрос:
~/ProdutosRelevantes?$top=5&
filtro.Cnpjs[0]=00000000000001&
filtro.DataInicio=2018-01-01&
filtro.DataFim=2018-12-01&
filtro.IndMercado=2&
Метод контроллера:
[HttpGet]
public IHttpActionResult ProdutosRelevantes([FromUri] ParametrosAnalise filtro)
{
var retorno = GetService().GetProdutosRelevantes(filtro);
return Content(HttpStatusCode.OK, retorno);
}
public class ParametrosAnalise
{
public Guid IdCliente { get; set; }
public string[] Cnpjs { get; set; }
public DateTime? DataInicio { get; set; }
public DateTime? DataFim { get; set; }
public EnumEscopoMercado? IndMercado { get; set; }
// Enum declaration
public enum EnumEscopoMercado
{
[Description("INCLUI NACIONAL")]
InternoEExterno = 1,
[Description("EXTERIOR")]
Externo = 2
}
}
Спасибо.