Я хотел бы выполнить запрос GET, например https://localhost:12345/api/employees/1/calendar/2018/2019?checkHistoricalFlag=true
Я создал этот метод в моем контроллере, который работает как ожидалось:
[AllowAnonymous]
[HttpGet("/api/employees/{clockNumber:int}/calendar/{yearFrom:int}/{yearTo:int}")]
public IActionResult Get(int clockNumber, int yearFrom, int yearTo, bool checkHistoricalFlag = false)
{
return Ok();
}
Однако я бы предпочел использовать следующую модель представления:
public class DetailsQuery
{
[Required]
public int? ClockNumber { get; set; }
[Required]
public int? YearFrom { get; set; }
[Required]
public int? YearTo { get; set; }
public bool CheckHistoricalFlag { get; set; } = false;
}
Это связывает параметры маршрута, но игнорирует "checkHistoricalFlag" из строки запроса:
[AllowAnonymous]
[HttpGet("/api/employees/{clockNumber:int}/calendar/{yearFrom:int}/{yearTo:int}")]
public IActionResult Get([FromRoute]DetailsQuery query)
{
return Ok();
}
Удаление [FromRoute] приводит к ошибке 415 «Неподдерживаемый тип носителя».
Возможно ли привязать параметры маршрута и значения строки запроса к одной модели представления или мне нужно указывать значения строки запроса отдельно?
[AllowAnonymous]
[HttpGet("/api/employees/{clockNumber:int}/calendar/{yearFrom:int}/{yearTo:int}")]
public IActionResult Get([FromRoute]DetailsQuery query, bool checkHistoricalFlag = false)
{
return Ok();
}