私は ASP.Net MVC4 アプリケーションを持っています。ここでは、T4MVC を使用して、ビュー内でアンカー要素を便利に生成しています。このようなもの:
@Html.ActionLink("Application 1", MVC.Application.Overview(1))
RouteConfig に 2 つのルートがあります。
routes.MapRouteLowercase(
    name: "DefaultWithId",
    url: "{controller}/{id}/{action}/{subaction}",
    constraints: new { id = @"\d+" },
    defaults: new { subaction = UrlParameter.Optional }
);
routes.MapRouteLowercase(
    name: "Default",
    url: "{controller}/{action}",
    defaults: new { controller = "Home", action = "Index" }
);
一部のアクションでは特定のアプリケーションへの ID が必要ですが、他のアクションはアプリケーション固有ではないため (すべてのアプリケーションを表示するページなど)、ID は必要ありません。
ルートはほとんどの場合うまく機能し、次のようなリンクを生成します。
/application/index        <-- Overview of all applications
/application/1/overview   <-- Overview of specific application
/application/1/overview私がオンになっていて、インデックスアクションに戻るアンカー要素を作成しようとすると、問題が発生します。生成されたリンクは最終的に になります/application/1/indexが、これは望ましい動作ではありません。
間違っている場合は訂正してください。ただし、ここで起こっていることは、T4MVC が現在のページのルートで使用可能なアプリケーション ID があることを認識し、その ID を使用してDefaultWithId、代わりにルートを使用できるようにすることです。 of Default、index-action への URL を生成します。
もちろん、次のような適切なアンカーを強制することもできます。
@Html.RouteLink(
     "All applications", 
     "Default", 
      new { controller = "Application", action = "Index"})
しかし、それは実際の問題ではなく、症状を治しているように感じます. また、すべてのアンカーのコンパイル時チェックの美しさを失うので、別のことをしたいと思います。
ビューでアンカーを生成するときに、T4MVC に現在のページのパラメーターを強制的に無視させる方法はありますか? または、この動作を回避するために何らかの方法でルートを変更できますか?