有没有办法获取导致调用控制器方法的路由名称?
所以,在我的startup.cs中:
routes.MapRoute(
name: "en-test",
template: "en",
defaults: new { controller = "Home", action = "Index" }
);
在我的控制器中:
[HttpGet]
public ActionResult Index()
{
//below returns the template "en" not the name "en-test" which I want
var routeName = RouteData.Routers[1].ToString()
return View();
}
正如您在上面所看到的,我尝试通过继承的Controller类来查看可用的选项。我似乎找不到能给我想要的东西。也许还有另一种方式?
调试时,我确实看到Name
属性。但这是无法获得的。所以也许我在某个地方错过了一个演员。
答案 0 :(得分:1)
是。您需要转换为(Microsoft.AspNetCore.Routing.RouteBase)
:
var routeName = RouteData.Routers[1];
var name = ((Microsoft.AspNetCore.Routing.RouteBase)routeName).Name;