我是属性路由的新手,我不确定这是否可能。
我有一个属性路由,它的工作原理如下:
[HttpGet]
[Route("GetIssuesByFlag/{flag:int=3}")]
public IEnumerable<IssueDto> GetIssuesByFlag(int flag)
现在我想添加一些额外的可选参数来缩小搜索范围,因此我想添加 2 个额外的可选参数。
我尝试过的:
[HttpGet]
[Route("GetIssuesByFlag/{flag:int=3?}/{categoryId:int?}/{tagIds?}")]
public IEnumerable<IssueDto> GetIssuesByFlag(int flag , int? categoryId = null, int?[] tagIds = null)
如果我的电话是这样的话,这很好用/api/controller/1/2
,但在涉及到时会失败并返回 404/api/controller/1
.
我怎样才能实现这个目标?
编辑 1:Nkosi 下面的答案有效,但是需要进行额外的修改。
[HttpGet]
[Route("GetIssuesByFlag/{flag:int=3}/{tagIds?}/{categoryId:int?}")]
public IEnumerable<IssueDto> GetIssuesByFlag(int flag , List<int> tagIds, int? categoryId = null )
列表或数组必须是第二个,因为如果没有提供值,它会自动为 null,并且不能使用 = null 标记为可选。
{flag:int=3?}
是问题所在。它是可选的{flag:int?}
使用操作中的默认值或{flag:int=3}
.
[HttpGet]
Route("GetIssuesByFlag/{flag:int=3}/{categoryId:int?}/{tagIds?}")]
public IEnumerable<IssueDto> GetIssuesByFlag(int flag , int? categoryId = null, int?[] tagIds = null)
您当前有 3 个可选参数。当您只有 1 值路由表时,您将不知道您指的是哪个可选参数,因此 404
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)