MVC4区域问题(已经在路径集合中)

时间:2012-11-21 17:38:49

标签: asp.net-mvc asp.net-mvc-4 asp.net-mvc-routing

名为“Home_default2”的路线已经在路线集合中。路线名称必须是唯一的。

    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        AreaRegistration.RegisterAllAreas();
        routes.MapRoute(
            name: "Default",
            url: "area/{controller}/{action}/{id}",
            defaults: new {area="Home_Default", controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }


        public override string AreaName
    {
        get
        {
            return "Home";
        }
    }

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

自动生成的代码是错误的,我做错了什么?

3 个答案:

答案 0 :(得分:7)

要解决此问题,只需删除bin文件夹中的所有.dll files,然后再次构建解决方案。这应该为你解决问题。

答案 1 :(得分:2)

问题是重复的`AreaRegistration.RegisterAllAreas();在路线上和在global.asax

所以只需要这个:

  routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }

将Home_Default更改为Home。

答案 2 :(得分:0)

在我的情况下,我创建了一个区域&我在Route.config中添加了这一行。

AreaRegistration.RegisterAllAreas();

但是这个陈述已经存在于global.asax的Application_start中。因此得到了错误。

所以从route.config中删除它。 我没有更改任何路线名称。一个路由名称是默认的(在RouteConfig文件中)&其他是isaname_default(在AreaRegistration.cs文件中)。