0

通常、アクション (「転送」) に到達するために代替またはレガシー ルートを追加した場合でも、URL を生成するときに使用されるデフォルト ルート (「逆方向」マッピング) が必要です。

routes.MapRoute("Legacy", "legacy/home/index",     // want forward-only mapping!
    new { controller = "Home", action = "Index" };
routes.MapRoute("Default", "{controller}/{action}/{id}",
    new { controller = "Home", action = "Index", id = UrlParameter.Optional }

この場合、次の呼び出し時にデフォルト ルートを使用する必要があります。

@ActionLink("Index", "Home")                       // generates legacy URLs ;(

スレッド:クエリ文字列を使用する場合と使用しない場合のレガシー リクエストのルーティング(問題 #1) では、解決策は、レガシー ルートごとに 2 つの MapRoute ステートメントを追加するか、各 ActionLink 呼び出しでルート名を指定することです。

逆ではなく、URL -> アクション マッピングのみに使用されるルートを定義する方法はありますか?

4

1 に答える 1

0

ルート ステートメントを一方向にのみ適用する方法が見つからないため、IIS URL Rewrite モジュールをインストールしました。これにより、URL が透過的に書き換えられるか、レガシー URL の場合は 301 リダイレクトされます。

とにかくglobal.asaxを編集するよりも保守しやすいソリューションです。

于 2012-08-14T01:16:25.170 に答える