我有一个有2个区域的项目。它确实有效,但我是新手,我想了解原因。
我有一个名为LogonArea的区域
context.MapRoute(
"LogonArea_default",
"LogonArea/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
为什么需要“LogonArea /”部分?如果没有它,它不应该找到控制器吗?
当我尝试删除它时,我仍然可以使用该区域到达控制器,但奇怪的是,在该页面上我无法到达其他区域。
如果真的有必要,我怎么能掩盖它,以便在网址中看不到区域?
感谢
答案 0 :(得分:1)
如果从区域路径注册中删除/LoginArea/
,它将能够找到您的控制器(只要您没有任何冲突的控制器名称,例如主要部分中的HomeController和HomeController中的该地区)。
它主要是为了您的方便。如果您有管理员区域,则可以通过/ Admin / {controller}访问您网站中的所有内容。它主要只是一个组织事物。
public class AdminAreaRegistration : AreaRegistration
{
public override string AreaName
{
get
{
return "Admin";
}
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Admin_default",
"{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
}
}
我在这个项目中创建了一个名为FooController
的控制器,我可以转到网址/Foo
,无需转到/Admin/Foo
当您在区域外创建指向控制器的链接时,您需要指定它所在的区域(或指定没有区域):
@Html.ActionLink("Go Home", "Index", "Home", new { area = "" }, null)