1

HomeController という名前のコントローラー、Home という名前のフォルダー、および Index という名前のビューがあります。また、TestEditController という名前の別のコントローラー、TestEdit という名前のフォルダー、および Index という名前のビューもあります。何らかの理由で、コンパイルすると、URL:http://localhost:4097/は Home/Index ではなく TestEdit/Index を指します。[プロパティ] > [アクションの開始] > [特定のページ] に移動し、テキスト ボックスを空白のままにしました。注: a を置くことは/機能しません。プロジェクト/ソリューションをクリーンアップ、ビルド、再構築しました。しかし、それでも同じ問題が発生します。これが私の Global.asax ファイルです。

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            "SectionsData", // Route name
            "{controller}/{action}/{id}/{prodno}/{instid}/{section}", // URL with parameters
            new { controller = "TestEdit", action = "Sections", id = UrlParameter.Optional, prodno = UrlParameter.Optional, instid = UrlParameter.Optional, section = UrlParameter.Optional } // Parameter defaults
        );

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

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

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

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

    }
4

2 に答える 2

3

マッチングが一般的すぎます。代わりにこれを試してください:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        "SectionsData", // Route name
        "TestEdit/Sections/{id}/{prodno}/{instid}/{section}", // URL with parameters
        new { controller = "TestEdit", action = "Sections", id = UrlParameter.Optional, prodno = UrlParameter.Optional, instid = UrlParameter.Optional, section = UrlParameter.Optional } // Parameter defaults
    );

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

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

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

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

}

...しかし、実際には、これらのルートの多くは必要ありません。

于 2012-07-17T20:27:56.590 に答える
1

SectionsData と Sections Route の両方に、他のすべてのパラメータがオプションであるため、デフォルト ルートの前に一致します。

于 2012-07-17T20:15:25.890 に答える