ルーティングに何か奇妙なことが見つかりました...
Visual Studio WebExpress2012でMVC3アプリケーションをテストしています
- 問題を切り分けるために新しいMVC3アプリケーションを作成しました
デフォルトルートの前に次のルートを追加しました。
routes.MapRoute( "default_localization", "{language}/{country}/{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional } );
次に、他に変更を加えることなく(プロジェクト作成後の初期ファイルだけの領域はありません)、アプリケーションを実行しましたが、一見するとすべてが正常に機能していました。これは新しいアプリケーションであるため、ページの上部に2つのリンクがあります。
- 家
- 約
アクションリンクは次のようになります。
<li>@Html.ActionLink("Home", "Index", "Home")</li>
<li>@Html.ActionLink("About", "About", "Home")</li>
次に、これが起こっていることです:
ブラウザのURLが次の場合:
http://localhost:54870/
- ホームリンクは次のとおりです。
http://localhost:54870/
- Aboutリンクは次のとおりです。
http://localhost:54870/Home/About
HTML
<li><a href="/">Home</a></li> <li><a href="/Home/About">About</a></li>
どちらでも大丈夫
- ホームリンクは次のとおりです。
ただし、[バージョン情報]リンクをクリックすると、ブラウザのURLは次のようになります。
http://localhost:54870/Home/About
- ホームリンクは次のようになります。
http://localhost:54870/Home/About
- アバウトリンクは次のようになります。
http://localhost:54870/Home/About/Home/About
リンクが混乱している場合でも、正しいアクションを実行します。
HTML
<li><a href="/Home/About">Home</a></li> <li><a href="/Home/About/Home/About">About</a></li>
- ホームリンクは次のようになります。
カスタムルーティングを削除すると、すべてが期待どおりに機能します
なぜこうなった?
どうすれば修正できますか?