没有路由匹配提供的值RedirectToRoute

时间:2018-03-12 21:34:15

标签: asp.net-core asp.net-routing

我设置了以下路线

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

当我使用" / bar"访问该网站时,我会按预期定向到Foo

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

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

没有路由匹配提供的值RedirectToRoute

为什么RedirectToRoute无效?

1 个答案:

答案 0 :(得分:1)

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

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

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

必须明确指定路径名称的好处是,您现在可以在不破坏命名路径的情况下更改模板。

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