如何知道当前映射了哪条路线
How to know which route is currently mapped
我有一条路线
routes.MapRoute(
"User", // Route name
"Person/{action}", // URL with parameters
new { controller = "User" } // Parameter defaults
);
这意味着如果我把 url 像
http://localhost/myApp/Person/Detail
那么它应该调用 User
控制器的 Detail
动作,对吗?
好的,我已经完成了,路由也很好用,意味着它正确地调用了动作。
现在,如果我想获取控制器名称,那么我将使用
ControllerContext.RouteData.Values["controller"];
这会给我 User
,但我希望它是 Person
(即 URL
)。我怎样才能得到它?
您可以通过以下代码获取控制器名称
HttpContext.Current.Request.RequestContext.RouteData.Values["controller"].ToString();
如果您在视图中,则可以执行以下操作:
ViewContext.RouteData.Values["Controller"]
对于自定义 url,您可以定义
[Route("myApp/Person/{action?}")]
public ActionResult View(string id)
{
if (!String.IsNullOrEmpty(id))
{
return View("ViewStudent", GetStudent(id));
}
return View("AllStudents", GetStudents());
}
Controller
的 Request.Url
属性 将 return 一个包含当前 url 详细信息的 Uri 对象,包括片段。
string[] segments = Request.Url.Segments;
// returns ["/", "Person/", "Detail"]
string value = segments[1].Remove(segments[1].Length - 1);;
// returns "Person"
我有一条路线
routes.MapRoute(
"User", // Route name
"Person/{action}", // URL with parameters
new { controller = "User" } // Parameter defaults
);
这意味着如果我把 url 像
http://localhost/myApp/Person/Detail
那么它应该调用 User
控制器的 Detail
动作,对吗?
好的,我已经完成了,路由也很好用,意味着它正确地调用了动作。
现在,如果我想获取控制器名称,那么我将使用
ControllerContext.RouteData.Values["controller"];
这会给我 User
,但我希望它是 Person
(即 URL
)。我怎样才能得到它?
您可以通过以下代码获取控制器名称
HttpContext.Current.Request.RequestContext.RouteData.Values["controller"].ToString();
如果您在视图中,则可以执行以下操作:
ViewContext.RouteData.Values["Controller"]
对于自定义 url,您可以定义
[Route("myApp/Person/{action?}")]
public ActionResult View(string id)
{
if (!String.IsNullOrEmpty(id))
{
return View("ViewStudent", GetStudent(id));
}
return View("AllStudents", GetStudents());
}
Controller
的 Request.Url
属性 将 return 一个包含当前 url 详细信息的 Uri 对象,包括片段。
string[] segments = Request.Url.Segments;
// returns ["/", "Person/", "Detail"]
string value = segments[1].Remove(segments[1].Length - 1);;
// returns "Person"