我有一条路线
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
中)。我怎么能得到它?
答案 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());
}