我有两个端点:
style:{textAlign:"right"}
和
[HttpPut]
[Route("Acc/{id:int}/Limit/{canIncreaseLimitsWithinSevenDays:bool}")]
public IHttpActionResult Put([FromUri]int id, [FromBody]Limit limit, bool canIncreaseLimitsWithinSevenDays = false)
调用Put端点时出现此错误:
[HttpGet]
[Route("Acc/{id:int}/Limit")]
public IHttpActionResult Get(int id)
这在我添加默认参数之前工作,两个路由完全相同。
如何在不必指定默认参数的参数的情况下调用Put端点,而无需更改Get端点的Route?
答案 0 :(得分:1)
路由参数canIncreaseLimitsWithinSevenDays
是必需的,因为它未标记为可选。要将其标记为可选,需要将?
(问号)添加到参数占位符。
从the Microsoft article on Web API attribute routing起,解释如下:
您可以通过向路由参数添加问号来使URI参数可选。如果route参数是可选的,则必须为method参数定义默认值。
意味着您需要将路线属性更改为
[Route("Acc/{id:int}/Limit/{canIncreaseLimitsWithinSevenDays:bool?}")]