これらに似た2つのルートが必要です。
routes.MapRoute("Detail", "guide/{urlname}", new { controller = "Application", action = "Detail" });
routes.MapRoute("Search", "guide/{keyword1}/{keyword2}", new { controller = "Guide", action = "Index", keyword1 = UrlParameter.Optional, keyword2 = UrlParameter.Optional });
したがって、1つのルートは、URL名に基づいてデータベース内のオブジェクトを検索する詳細ページであり、もう1つのルートは、アプリケーションで生成されたキーワードに基づく検索結果ページであり、どちらも同じURLルート(/guide
)を共有します。2つのアクションは異なるコントローラーにあります。可能なURLは次のとおりです。
/guide/evernote --> should route to the application detail page
/guide --> should route to search results without filter
/guide/iphone --> should route to iphone apps search results
/guide/iphone/medical --> should route to medical iphone apps search results
明らかに、このよう/guide/iphone
に、最初のルートはすでに同じURLに一致しているため、2番目のルートがURLに一致することはありません。
コントローラがデータベースでオブジェクトを見つけられない場合、最初のアクションでリダイレクトを実行したくありません。では、他にどのような選択肢がありますか?カスタムを作成する必要がありますか、RouteHandler
それともUrlRoutingModule
このために作成する必要がありますか、それとももっと簡単な方法がありますか?