私は次のようにルートを設定しています:
context.MapRoute(
name: "Area",
url: "Area/{controller}/{action}",
defaults: new
{
controller = "Home",
action = "Dashboard"
}
);
context.MapRoute(
name: "AccountArea",
url: "Area/{accountFriendlyId}/{controller}/{action}",
defaults: new
{
controller = "Home",
action = "Dashboard",
accountFriendlyId = RouteParameter.Optional
}
);
context.MapRoute(
name: "AccountCampaignArea",
url: "Area/{accountFriendlyId}/{campaignFriendlyId}/{controller}/{action}",
defaults: new
{
controller = "Home",
action = "Dashboard",
accountFriendlyId = RouteParameter.Optional,
campaignFriendlyId = RouteParameter.Optional
}
);
Area/friendlyAccountName/Home
そして、私は私を連れて行きたいという燃えるような願望を持っていますDashboard()
が、これはうまくいきません(404)。その理由は、friendlyAccountNameコントローラーを探しに行くからだと思います。
コントローラーの1つがクラッシュした後にアカウントに名前を付けることを選択した場合、文字列が対応するコントローラーを見つけられなかった場合に次のルートにフォールスルーする方法はありますか?コントローラーのリストを変更するたびにリフレクションを使用して制約を維持しないようにする方法はありますか?
編集
リフレクションを使用しない方法、または少なくともこの領域への派生型検索を含む方法を知っていますか?2番目のルートパラメーターがコントローラー名と一致するときにそのオーバーヘッドが2回発生するという考えは好きではありません(コントローラーを構築するときに制約を渡してから再度検索します)。コントローラーを構築し、バックアップして次のルートにフォールスルーする時点で例外をキャッチする方法があればいいのにと思います。