如何知道当前映射的路由

时间:2016-05-25 11:04:31

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

我有一条路线

routes.MapRoute(
                "User", // Route name
                "Person/{action}", // URL with parameters
                new { controller = "User" } // Parameter defaults
            );

这意味着如果我把网址设为

http://localhost/myApp/Person/Detail

那么它应该调用Detail控制器的User动作,对吗?

好的,我已经完成了它,路由也很好用,意味着它可以正确地调用动作。

现在,如果我想获得控制器名称,那么我将使用

ControllerContext.RouteData.Values["controller"];

这会给我User,但我希望它是Person(即在URL中)。我怎么能得到它?

2 个答案:

答案 0 :(得分:1)

Request.Url的{​​{1}}属性将返回包含当前网址详情的Uri对象,包括细分。

Controller

答案 1 :(得分:0)

您可以通过以下代码获取控制器名称

HttpContext.Current.Request.RequestContext.RouteData.Values["controller"].ToString();

如果您在视图中,则可以执行以下操作:

ViewContext.RouteData.Values["Controller"]

并且对于自定义网址,您可以定义

[Route("myApp/Person/{action?}")]
    public ActionResult View(string id)
    {
        if (!String.IsNullOrEmpty(id))
        {
            return View("ViewStudent", GetStudent(id));
        }
        return View("AllStudents", GetStudents());
    }