名前空間を調べたり、制約をいじったりしてきましたがSystem.Web.Routing
、これを実装する方法がわかりません。
WebPages/Razor フレームワークを使用して、ASP.NET Web サイト (非 WAP、非 MVC )に取り組んでいます。
親が一致する場合にのみ試行される子ルートをルートに含めることができる「ネストされたルーティング」の形式を実装しようとしています。各子は URI の「残り」との照合を試みます。必要に応じて、「深さ優先」のルート一致検索。
routes.Add(new ParentRoute("{foo}/{*remainder}", new[] {
new ParentRoute("{bar}/{*remainder}", new[] {
new Route("{baz}"),
new Route("{zip}"),
}),
new ParentRoute("{qux}/{*remainder}", new[] {
new Route("{baz}"),
new Route("{zip}"),
}),
));
簡潔にするために、必要な制約/ハンドラー (他のパラメーターの中でも) を除外しました。
いずれにせよ、ツリーを下っていく各ステップ{*remainder}
は URI の末尾に一致します。ブランチが失敗すると、次のブランチに移動し、基本的に次のようなテストを行います。
foo
foo/bar
foo/bar/baz
foo/bar/zip
foo/qux
foo/qux/baz
foo/qux/zip
さて、私は確かに「コードを書いてください」と言っているのではなく、正しい方向へのジェスチャーです。
このような機能の実装を開始するには、API のどこを見ればよいでしょうか? ルートや制約などの記述に関する無数のチュートリアルや情報を見つけることができますが、ルーティング エンジンの拡張に関する情報はありません。
補遺
令状として追加し続けます
このような「ルーティング ツリー」からの URL 生成が複雑になることは承知しています。それは私が実装するつもりのものではありません。
一種の反復的なルート生成で十分であることに気付きました。だから私はそれを可能な答えとしてすぐに投稿すると思います。いいえ、そうではありません。エッジケースが多すぎます。