1

名为“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 }
        );
    }
}

自动生成的代码有问题,我做错了什么?

4

3 回答 3

7

要解决此问题,只需删除.dll filesbin 文件夹中的所有内容,然后再次构建解决方案。这应该可以为您解决问题。

于 2014-07-21T08:26:10.920 回答
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。

于 2012-12-06T14:59:18.680 回答
0

就我而言,我创建了一个区域并在 Route.config 中添加了这一行。

AreaRegistration.RegisterAllAreas();

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

因此将其从 route.config 中删除。我没有为它更改任何路线名称。一个路由名称是默认的(在 RouteConfig 文件中),另一个是 areaname_default(在 AreaRegistration.cs 文件中)。

于 2015-11-28T12:50:57.890 回答