我想将两个参数id
和page
传递给动作。但是当我使用此代码
[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
操作。
告诉我这个错误
索引(从零开始)必须大于或等于零且小于参数列表的大小。
答案 0 :(得分: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);
}
答案 1 :(得分:1)
您可以通过查询传递参数。
[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);
}
使用查询字符串作为页面 这样。