1

URLからコントローラー名を隠して、それを実行したい

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

        routes.MapRoute(
            "AccountRoute",
        "{action}",
        new { controller = "Account", action = "Index" }
        );


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

    }

でも行こうとすると

localhost:1234/Settings - 動作しません。

しかし

localhost:1234/Account/Settings -works..

これについては多くの質問があり、それらはすべて、私がすでに上に持っていることを示唆しています。私はどこで間違っていますか?? または私は何かを逃していますか?

4

2 に答える 2

2

ルートのAccountRoute下に移動します。Defaultこのようなルートを作成すると、意図しない結果が生じる可能性があることに注意してください。

于 2013-10-02T19:17:44.560 に答える
0

オプションのパラメーターを AccountRoute に追加してみてください。アクションがコントローラーと同じ名前を持たないように注意してください。そうしないと、ルーティングが正しく機能しません。

routes.MapRoute(
    "AccountRoute",
    "{action}/{id}",
    new { controller = "Account", action = "Index", id = UrlParameter.Optional }
);
于 2013-10-02T19:14:06.590 に答える