【发布时间】:2016-11-18 21:07:58
【问题描述】:
我是 MVC 中区域术语的新手,我想使用它。我有以下目录指向区域中的控制器。
Areas > Admin > Controllers > AdminController
当我要访问AdminController的Index Action时,需要访问http://localhost/Admin/Admin。我想摆脱第二个“管理员”。我只想输入http://localhost/Admin/。我该怎么做?
AdminAreaRegistration.cs 有以下 MapRoute
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Admin_default",
"Admin/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
}
【问题讨论】:
-
给一个默认的控制器 -
new { controller = "Admin", action = "Index", id = UrlParameter.Optional }(但是如果你在其中有一个同名的控制器,那就有点违背了拥有区域的目的) -
成功了,谢谢。但是,我不明白。当你把"new { controller = "Admin", action = "Index", id = UrlParameter.Optional }" 的时候,是不是表示你指定默认控制器是Admin?
-
是的,如果 url 是
.../Admin,它将匹配您的"Admin_default",路由(它以“Admin”开头)。因为您没有提供第二段(用于控制器),它将使用控制器和操作的默认值(实际上与.../Admin/Admin/Index相同) -
但正如我所指出的,在
Admin区域中有一个AdminController并没有真正的意义 -
这是一个很好的观点。我应该将我的控制器重命名为 HomeController 吗?
标签: c# asp.net-mvc routing asp.net-mvc-routing