Asp.net mvc asp mvc项目中的操作链接和区域问题

Asp.net mvc asp mvc项目中的操作链接和区域问题,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-routing,asp.net-mvc-areas,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc Routing,Asp.net Mvc Areas,我有一个区域Area1和控制器Home,它是Index方法。 我还用controllerHome创建了另一个区域Area2,它是Index方法。 在Area1中,我有一个操作链接,应该在Area2中打开Index页面 @Html.ActionLink("Link to another area index", "Index", "Home", new { area = "Area2" }, null) 但是当我点击这个链接时,它首先进入区域1/Home/Index 为什么会发生这种情况。这必须

我有一个区域
Area1
和控制器
Home
,它是
Index
方法。
我还用controller
Home
创建了另一个区域
Area2
,它是
Index
方法。
Area1
中,我有一个操作链接,应该在
Area2
中打开
Index
页面

@Html.ActionLink("Link to another area index", "Index", "Home", new { area = "Area2" }, null)
但是当我点击这个链接时,它首先进入
区域1/Home/Index

为什么会发生这种情况。这必须是这样的还是可以直接转到
区域2/主页/索引

这给我带来了问题,因为在Area1/Home/Index中,我需要一些参数,而当这种情况发生时,该值为null或错误,这给我带来了问题。我一定是做错了什么。 更新 区域1路由

public override void RegisterArea(AreaRegistrationContext context)
        {
            context.Routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });

            context.MapRoute(
                "Area1_home",
                "{country}/{city}",
                new { controller = "Home", action = "Index", country = UrlParameter.Optional, city = UrlParameter.Optional }
            );

            context.MapRoute(
                "Area1_default",
                "Area1/{controller}/{action}/{id}",
                new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );
        }
区域2路由:

public override void RegisterArea(AreaRegistrationContext context)
        {
            context.MapRoute(
                "Area2_default",
                "Area2/{controller}/{action}/{id}",
                new { controller="Home", action = "Index", id = UrlParameter.Optional }
            );
        }
尝试:


仍然首先进入区域1/主页/索引:(嗯,这很奇怪,我发现更多的链接说的几乎是一样的:在这里也一样。如果你的区域设置正确,没有特殊路由配置,我不知道为什么它不起作用。你试过用大写字母
a
拼写的
Area
是吗?是的,我试过“a”。我用rou更新了问题ting,因为可能是路由给我带来了麻烦。当我创建项目时,我从global.asax中删除了所有路由。我现在返回默认路由,它工作了。我不明白为什么这样做…routes.MapRoute(“default”,//路由名称“{controller}/{action}/{id}”,//带有参数new{area=“Area1”,controller=“Home”,action=“Index”,id=UrlParameter.Optional}//参数默认值);至少你的操作链接可以正常工作,并且现在可以专注于路由。路由可能会变得非常混乱。请记住,始终尝试自上而下匹配路由。因此,无论先添加哪个路由配置,都将首先尝试匹配的配置。如果MVC找到匹配,它将不会继续搜索并返回该路由配置。添加路由时,始终将其添加为最重要的匹配首个,最不重要的匹配最后一个。
Html.ActionLink("Link to another area index", "Index", "Home", new { Area = "Area2" }, new{});