Как мне разрешить необязательные параметры маршрутизации разрешить ноль? - PullRequest
1 голос
/ 03 апреля 2019

Я пытаюсь разрешить нулевые значения в одном из моих методов контроллера.Выглядит это так:

[Route("items/type/{catalogTypeId}/brand/{catalogBrandId}")]
public async Task<IActionResult> Items(int? catalogTypeId, int? catalogBrandId, [FromQuery] int pageSize = 6, [FromQuery] int pageIndex = 0)

Когда я пытаюсь почтальону items/type/1/brand/null?pageSize=6&pageIndex=0, выдается ошибка 400

«Значение« ноль »недопустимо».

Как мне поступить с разрешением нулевого значения?

1 Ответ

1 голос
/ 03 апреля 2019

Сделать необязательным параметр шаблона маршрута {catalogBrandId?}

[Route("items/type/{catalogTypeId}/brand/{catalogBrandId?}")]
public async Task<IActionResult> Items(int? catalogTypeId, int? catalogBrandId = null, [FromQuery] int pageSize = 6, [FromQuery] int pageIndex = 0)

и исключить его из URL

items/type/1/brand?pageSize=6&pageIndex=0

Для получения более чистого URL вы должны использовать несколько маршрутов

[Route("items")]
[Route("items/type/{catalogTypeId}")]
[Route("items/type/{catalogTypeId}/brand/{catalogBrandId}")]
public async Task<IActionResult> Items(int? catalogTypeId = null, int? catalogBrandId = null, [FromQuery] int pageSize = 6, [FromQuery] int pageIndex = 0)

Обратите внимание, что шаблон больше не является обязательным, но параметр в действии является необязательным.

Это позволит

items?pageSize=6&pageIndex=0
items/type/1?pageSize=6&pageIndex=0
items/type/1/brand/2?pageSize=6&pageIndex=0
...