繁体   English   中英

如何让可选路由参数允许为空?

[英]How do I let optional routing parameters allow null?

我试图在我的控制器方法之一中允许空值。 它看起来像这样:

[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

“值 'null' 无效”。

我将如何允许空值?

将路由模板参数设为可选{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)

请注意,模板不再是可选的,但 Action 中的参数是可选的。

这将允许

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM