You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core控制器:如何在路由中接收多个参数

如何在.NET Core控制器中将take和skip参数通过路由传递

完全可以实现将take和skip通过路由传递,只需要修改控制器动作的路由模板,把这两个参数加入到路由规则中即可。

修改后的控制器动作代码

[HttpGet("{filename}/{take:int}/{skip:int?}")]
public async Task<IActionResult> Get([FromRoute] string filename, [FromRoute] int take, [FromRoute] int skip = 0)
{
    // process file
}

关键说明:

  1. 路由模板调整:将原来的[HttpGet("{filename}")]修改为[HttpGet("{filename}/{take:int}/{skip:int?}")]:

    • {take:int}:指定take是整数类型的路由参数,强制要求传入有效值
    • {skip:int?}:?表示该参数可选,配合方法中skip = 0的默认值,当请求中省略该参数时会自动使用默认值
  2. 参数绑定:给take和skip加上[FromRoute]特性(虽然默认情况下路由参数会自动绑定,但显式声明更清晰,避免歧义)

  3. 文件名路由约束:如果你的文件名包含点号(比如myfilename.txt),默认路由解析可能会误将点号后的部分当成扩展名。可以给filename添加路由约束,确保它能正确捕获包含点号的文件名:

    [HttpGet("{filename:regex(^[^/]+$)}/{take:int}/{skip:int?}")]
    

    这个正则约束会匹配任何不包含斜杠的字符串,保证文件名被完整捕获。

测试请求示例

  • 带skip参数的请求:https://localhost:43845/File/myfilename.txt/10/1
    此时filename为myfilename.txt,take为10,skip为1
  • 省略skip参数的请求:https://localhost:43845/File/myfilename.txt/10
    此时skip会自动使用默认值0

内容的提问来源于stack exchange,提问作者CraftyFox

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 03:43:10