获取控制器中的路由名称

时间:2018-02-02 09:10:57

标签: c# asp.net-mvc asp.net-core routing

有没有办法获取导致调用控制器方法的路由名称?

所以,在我的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属性。但这是无法获得的。所以也许我在某个地方错过了一个演员。

1 个答案:

答案 0 :(得分:1)

是。您需要转换为(Microsoft.AspNetCore.Routing.RouteBase)

var routeName = RouteData.Routers[1];
var name = ((Microsoft.AspNetCore.Routing.RouteBase)routeName).Name;