Web API属性路由中的可选INT参数

时间:2016-06-29 20:58:57

标签: asp.net-mvc asp.net-web-api2

我试图在ASP.NET Core应用程序中创建一个API方法,该方法可能会也可能不会接收整数输入参数。我有以下代码,但得到一个错误。我做错了什么?

// GET: api/mycontroller/{id}
[HttpGet("id:int?")]
public IActionResult Get(int id = 0)
{
   // Some logic here...
}

这是我得到的错误: enter image description here

1 个答案:

答案 0 :(得分:1)

"id:int?"不是有效的路由模板,它只是一个字符串文字(就像您希望请求网址看起来像http://server/api/MyController/id:int?那样是不允许的。 有趣的是,这只是因为?字符;如果你删除它,那么文字将被允许(即使它没用)。

"{id:int?}"是一个正确的路由模板,并且可以正常工作,即网址看起来像http://server/api/MyController/42http://myserver/api/MyController/,它将提供默认值

所以方法应该是这样的:

// GET: api/mycontroller/{id}
[HttpGet("{id:int?}")]
public IActionResult Get(int id = 0)
{
   // Some logic here...
}