Проблема, описанная выше, уже исправлена. Кроме того, даже если он не исправлен, вы можете обойти его по [FromQuery(Name="xxx")]
. См. обход Дугбу .
Кажется, вы используете [ApiController]
, я тестирую его с 2.1.302
и 2.1.402
, он работает безупречно.
Допустим, вы хотите выполнить запрос к MyColoumnFilter
, который будет использоваться как ваш T ColumnFilters
в классе PagingControl<T>
:
public class MyColumnFilter
{
public string FieldA { get; set; }
public string FieldB { get; set; }
}
и ваш метод действий на стороне сервера:
[Route("api/[controller]")]
[ApiController]
public class MyController : Controller
{
// GET api/values
[HttpGet]
public IActionResult Get([FromQuery]PagingControl<MyColumnFilter> pc)
{
return new JsonResult(pc);
}
// ...
}
Если вы отправите запрос, как показано ниже:
GET https://localhost:5001/api/my?page=1&perPage=10&columnFilters.fieldA=1&columnFilters.fieldB=2&columnSorts[0].Field=cs1&columnSorts[0].Type=Asc&columnSorts[1].Field=cs2&columnSorts[1].Type=Desc HTTP/1.1
будет работать как положено:
![enter image description here](https://i.stack.imgur.com/JcdsR.png)
Строка запроса может быть разделена на 4 части:
- страница:
int
из 1
- perPage:
int
из 10
- columnFilters:
columnFilters.fieldA=1&columnFilters.fieldB=2
- columnSorts []: поскольку
ColumnSorts
является массивом, мы должны создать параметр, подобный columnSorts[0].Field=xx&columnSorts[0].Type=Asc&columnSorts[1].Field=...
В качестве дополнительного примечания, это усложнит строку запроса, если вы используете метод GET
http. См. комментарий Криса Пратта под моим другим ответом.