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 filesは、bin フォルダー内の をすべて削除してから、ソリューションを再度ビルドします。これで問題は解決するはずです。

于 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 をホームに変更します。

于 2012-12-06T14:59:18.680 に答える
0

私の場合、エリアを作成し、Route.config にこの行を追加しました。

AreaRegistration.RegisterAllAreas();

しかし、このステートメントは、global.asax の Application_start に既に存在していました。したがって、エラーが発生しました。

そのため、route.config から削除しました。ルート名は変更しませんでした。1 つのルート名はデフォルト (RouteConfig ファイル内) で、もう 1 つは areaname_default (AreaRegistration.cs ファイル内) でした。

于 2015-11-28T12:50:57.890 に答える