2

我有一个没有注册区域的网站。然后我注册了一个名为“ MyNewArea”的区域。

现在我的默认网站链接(如博客等)不再有效。

所以我现在有一个区域文件夹,其中包含一个区域,以及我最初创建项目时的默认文件夹。

在我的地区AreaRegistration课程中,我有;

public override void RegisterArea(AreaRegistrationContext context)
{
    context.MapRoute(
        "MyArea_default",
        "{controller}/{action}/{id}",
        new { action = "Index", id = UrlParameter.Optional }
    );
}

但这看起来与默认的冲突之一

routes.MapRoute(
    "Default", // Route name
    "{controller}/{action}/{id}", // URL with parameters
    new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);

我需要做什么才能使该区域与默认站点和控制器一起使用?

4

2 回答 2

2

你是对的,映射的路线会发生冲突(在“冲突”的意义上,它会首先匹配)。您需要将映射的区域路线更改为:

        context.MapRoute(
            "MyArea_default",
            "MyArea/{controller}/{action}/{id}",
            new { controller = "MyAreaController", action = "Index", id = UrlParameter.Optional }
        );

在您添加此区域(进而是区域路由)后,您的 URL 中断的原因是,它使用您的区域路由来处理您的区域中不存在的处理MyArea

于 2012-03-05T02:00:08.180 回答
1

将新的区域路由表更改为:

context.MapRoute(
    "MyArea_default",
    "MyNewArea/{action}/{id}",
    new { controller = "MyNewArea", action = "Index", id = UrlParameter.Optional }
);
于 2012-03-05T01:57:29.383 回答