C# 如何在路由控制器中传递两个参数

C# 如何在路由控制器中传递两个参数,c#,asp.net-core,routes,C#,Asp.net Core,Routes,我想把两个参数id和page传递给action。但是当我使用这个代码时 [HttpGet] [路由(“Actor/{id:int}/{page:int}”)] 公共异步任务参与者(int-id、int-page、CancellationToken CancellationToken) { var data=await\u videoService.GetActorVideos(id、page、cancellationToken); 返回视图(数据); } 程序启动时发生路由错误。它永远不会到达

我想把两个参数
id
page
传递给action。但是当我使用这个代码时

[HttpGet]
[路由(“Actor/{id:int}/{page:int}”)]
公共异步任务参与者(int-id、int-page、CancellationToken CancellationToken)
{
var data=await\u videoService.GetActorVideos(id、page、cancellationToken);
返回视图(数据);
}
程序启动时发生路由错误。它永远不会到达
\u videoService
行,并且不会执行
Actor
操作

告诉我这个错误

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


你的代码片段适合我。我稍微修改了它,并在以“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);
}
[HttpGet]
[路由(“Actor/{id:int}/{page:int}”)]
公共异步任务参与者(int-id、int-page、CancellationToken CancellationToken)
{
var数据=(id、页面、cancellationToken);
返回视图(数据);
}

您的代码片段适合我。我稍微修改了它,并在以“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);
}
[HttpGet]
[路由(“Actor/{id:int}/{page:int}”)]
公共异步任务参与者(int-id、int-page、CancellationToken CancellationToken)
{
var数据=(id、页面、cancellationToken);
返回视图(数据);
}

您可以通过查询传递参数

[HttpGet]
[路由(“Actor/{id:int}”)]
公共异步任务参与者(int-id,int-page=1,CancellationToken-CancellationToken=default)
{
var data=await\u videoService.GetActorVideos(id、page、cancellationToken);
返回视图(数据);
}
对页面使用查询字符串
这样。

您可以通过查询传递参数

[HttpGet]
[路由(“Actor/{id:int}”)]
公共异步任务参与者(int-id,int-page=1,CancellationToken-CancellationToken=default)
{
var data=await\u videoService.GetActorVideos(id、page、cancellationToken);
返回视图(数据);
}
对页面使用查询字符串
以这种方式。

这不是发生错误的代码。@sᴇM如果它工作正常,我不会问问题。@FarhadZamani删除对
\videService.GetActorVideos(…)
的调用,并确认
id
页面
未设置为您期望的值。如果是这样,请用“如何”调用API更新您的问题。正如在其他注释中提到的,您发布的错误不是由您发布的代码引起的。它可能是由
\u videoService
调用引发的,但我们需要删除该调用以证明这一点。@FarhadZamani如前所述,错误不在您发布的代码中。您需要一个调试器来逐步检查代码以确定错误发生的位置(可能在
startup.cs
)。然后将代码添加到您的问题中。目前,我们无法看到错误发生的位置并提供解决方案。这不是错误发生的代码。@sᴇM如果它工作正常,我不会问问题。@FarhadZamani删除对
\videService.GetActorVideos(…)
的调用,并确认
id
页面
未设置为您期望的值。如果是这样,请用“如何”调用API更新您的问题。正如在其他注释中提到的,您发布的错误不是由您发布的代码引起的。它可能是由
\u videoService
调用引发的,但我们需要删除该调用以证明这一点。@FarhadZamani如前所述,错误不在您发布的代码中。您需要一个调试器来逐步检查代码以确定错误发生的位置(可能在
startup.cs
)。然后将代码添加到您的问题中。目前,我们无法看到错误发生在哪里,也无法提供解决方案。