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
)。然后将代码添加到您的问题中。目前,我们无法看到错误发生在哪里,也无法提供解决方案。