没有路由与提供的值“重定向到路由”匹配



我设置了以下路线

[HttpGet("bar")]
public IActionResult Foo()

当我使用"/bar"访问网站时,正如预期的那样,我被定向到Foo

但是,如果我尝试重定向到"bar",则会出现错误:

public async Task<IActionResult> Index()
{
    return RedirectToRoute("bar");
}

没有路由与提供的值匹配 重定向到路由

为什么RedirectToRoute不起作用?

问题是"bar"是路由模板,而不是路由名称。为了重定向到特定路由,必须命名该路由。在这种情况下,您可以做

 [HttpGet("bar", Name = "bar")]

这也适用于创建路由,例如Url.RouteUrlnew CreatedAtRouteResultCreatedAtRoute等。路由名称在所有情况下都必须存在。

必须显式指定路由名称的好处是,您现在可以更改模板而不会破坏命名路由。

 [HttpGet("bar?{data?}", Name = "bar")]

最新更新