MVC路由URL到区域控制器

问题描述

嗨,我想使用该URL siteurl/admin路由到我的AdminLoginController(在Admin区域内)。我在Registerarea(AreaRegistrationContext context)函数中的代码

    context.MapRoute(
                    "Admin_1","Admin",new { controller = "AdminLogin",action = "Index" }        
                );
    
//    the default route map

    context.MapRoute(
                    "Admin_default","Admin/{controller}/{action}/{id}",new { controller="AdminLogin",action = "Index",id = UrlParameter.Optional}
                );

但是,我只能通过siteurl/Admin/AdminLogin而不是siteurl/Admin转到所需的页面

如果我将自定义路线更改为:

context.MapRoute(
                "Admin_1","",action = "Index" }        
            );

然后,使用网址siteurl/时,我可以转到所需的页面(AdminLogin索引页面)。

如何自定义MapRoute以使用siteurl/Admin转到我的页面

解决方法

我尝试在仅具有家庭和管理员登录控制器的空白项目中复制此文件,但似乎以下路由应能按预期工作:

context.MapRoute(
            "Admin_default","Admin/{controller}/{action}/{id}",new { controller="AdminLogin",action = "Index",id = UrlParameter.Optional}
        );

您遇到的问题很可能是由于顺序所致,就像放置在默认路由之后一样,它失败了,因为在提供“ siteurl / Admin”时它将首先匹配默认路由。