コントローラーに関連付けられていないカスタム ページを作成できるようにしたいと考えています。これらのカスタム ページはすべて、既定のコントローラーにルーティングされます。次に、コントローラ クラスが通常どおり設定されている、カスタムではない他のページがあります。ルーティング ルールを両方の状況で機能させることができません。
次のようなルーティング ルールがあります。
routes.MapRoute( _
name:="Default", _
url:="{controller}/{action}", _
defaults:=New With {.controller = "Home", .action = "Index"} _
)
routes.MapRoute( _
name:="Custom Page", _
url:="{name}", _
defaults:=New With {.controller = "Page", .action = "Index"} _
)
この状況は、静的コントローラーでは機能しますが、カスタム ページでは機能しません。存在しないカスタム名 (url:="{name}") を持つコントローラーを常に検索しようとするため、「リソースが見つかりません」というエラーが発生します。
ルールを逆にすると、カスタム ページは正しく機能しますが、静的ページは機能しません。
問題は、両方のルールが互いに重複していることであることがわかっているため、最初に使用された方が常に使用されます。理想的には、ルーティングに X という名前のコントローラーを探すように指示できるようにしたいと考えています。存在する場合はそれを使用します。存在しない場合は、Y コントローラーにリダイレクトし、パラメーターとして X を渡します。現在、コントローラーが存在しない場合、次のルーティング ルールに進むことはなく、単にリソースが見つからないというメッセージが表示されます。
このようなことは可能ですか?