それぞれのコントローラーへのカスタムルートを作成したいMVC 4アプリケーションがあります。目標は、URL にアクション名を表示せず、コントローラー名とパラメーターのみを表示することです。
routes.MapRoute(
"Account", // Route name
"Account/{param}", // URL with parameters
new { controller = "Account", action = "Account", param = UrlParameter.Optional }, // Parameter defaults
new { controller = @"^(Account)$" } //Parameter constraints
);
routes.MapRoute(
"Login", // Route name
"Login/{returnurl}", // URL with parameters
new { controller = "Login", action = "Login", returnurl = UrlParameter.Optional }, // Parameter defaults
new { controller = @"^(Login)$" } //Parameter constraints
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
現時点では、このルートを使用していますが、各ルートのデフォルトのパラメーター/URL で指定されていない別のアクションを呼び出すまでは正常に動作します。
たとえば、Login/Login または Login/Login?somevalue へのルートは、URL Logn または Login/somevalue でアクションを表示しないように期待どおりに機能します。ただし、同じコントローラーで別のアクションが要求されるとすぐに、ルートはログイン/ログイン/ログアウトに解決されます。ログイン コントローラへのすべてのリクエストに一致するようにルートを設定したのに、なぜこの問題が発生するのですか? コントローラー内のすべてのアクションには、returnurl パラメーターがあります。
この問題についての説明または明確化は、時間をかけて私のルートを表示できる場合は大歓迎です.
どんな助けや考えもいいでしょう。前もって感謝します。