MVC默认区域不起作用

时间:2012-03-05 01:52:38

标签: c# asp.net-mvc-3 asp.net-mvc-3-areas

我有一个没有注册区域的网站。然后我注册了一个名为“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
);

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

2 个答案:

答案 0 :(得分:2)

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

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

在您添加此区域(以及区域路线)后,您的网址出现故障的原因,它使用您的区域路由进行处理MyArea区域中不存在。

答案 1 :(得分:1)

将新区域路径表更改为:

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