我设置了以下路线
[HttpGet("bar")]
public IActionResult Foo()
当我使用" / bar"访问该网站时,我会按预期定向到Foo
。
但是,如果我尝试重定向到" bar",我会收到错误:
public async Task<IActionResult> Index()
{
return RedirectToRoute("bar");
}
没有路由匹配提供的值RedirectToRoute
为什么RedirectToRoute
无效?
答案 0 :(得分:1)
问题在于&#34; bar&#34;是路由模板,而不是路由名称。为了重定向到特定路由,必须命名该路由。在这种情况下,您可以
[HttpGet("bar", Name = "bar")]
这也适用于创建路线,例如Url.RouteUrl
,new CreatedAtRouteResult
或CreatedAtRoute
等。路线名称必须在所有情况下都存在。
必须明确指定路径名称的好处是,您现在可以在不破坏命名路径的情况下更改模板。
[HttpGet("bar?{data?}", Name = "bar")]