首页 > 解决方案 > 如何在路由控制器中传递两个参数

问题描述

我想传递两个参数idpage采取行动。但是当我使用这段代码时

[HttpGet]
[Route("Actor/{id:int}/{page:int}")]
public async Task<IActionResult> Actor(int id, int page, CancellationToken cancellationToken )
{
    var data = await _videoService.GetActorVideos(id, page, cancellationToken);
    return View(data);
}

程序启动时出现路由错误。它永远不会到达该_videoService行,并且Actor不会执行该操作。

并告诉我这个错误

索引(从零开始)必须大于或等于零且小于参数列表的大小。

标签: c#asp.net-coreroutes

解决方案


您的代码片段对我有用。我稍微修改了它,并在以“var data”开头的行上放置了一个断点。如果我通过浏览器导航到解析为此路由的 URL,则所有参数都有一个值。

[HttpGet]
[Route("Actor/{id:int}/{page:int}")]
public async Task<IActionResult> Actor(int id, int page, CancellationToken cancellationToken )
{
    var data = (id, page, cancellationToken);
    return View(data);
}

推荐阅读