-1

我想传递两个参数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不会执行该操作。

并告诉我这个错误

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

4

2 回答 2

1

您的代码片段对我有用。我稍微修改了它,并在以“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);
}
于 2019-08-06T06:14:10.640 回答
0

您可以通过查询传递参数。

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

以这种方式对页面使用查询字符串。

于 2019-08-07T16:20:08.960 回答