アプリケーションがルートを処理する方法を大幅にカスタマイズしたいと考えています。基本的に、次のようなプロセスを実現したいと考えています。
- ユーザーリクエスト URL: /custom-url-part-1/custom-url-part-2/gallery/1/date
- アプリケーションは、ルートのデータベース テーブルで一致を検索します
- アプリケーションは、以下で構成される一致するルート レコードを返します。
- ルート URL
- コントローラ
- アクション
- パラメーター
- デフォルト
- アプリケーションは RouteUrl を見て、オプションのパラメーター {pagenum}、{orderby} を解析します
- アプリケーションは、これらが要求された URL で提供されているかどうかを確認します
- それらが提供されていない場合は、Route レコードの「デフォルト」をチェックして取得します。
- これらは RouteData デフォルトで渡されます
- パラメーターは RouteData デフォルトで渡されます
- ルートデータが返されます
これの主な理由は、ルートに対して特定のデータを保存するために CMS によって変更される、ルートの動的テーブルが必要なことです。
私が持っている質問は次のとおりです。
MVC が Uri をルートに一致させる方法を複製するにはどうすればよいですか? 基本的に、データベース テーブルを調べて、Uri に基づいて適切なルートを返す必要があります。標準の ASP.NET MVC 機能が RouteCollections を調べて正しいルートを使用する方法と非常によく似ています。
MVC が組み込みで提供するいくつかの機能を本質的に書き直し、RoutesCollection をデータベースに置き換えていることは理解していますが、2 つのことを達成するにはそれを行う必要があります。
- ルートは完全に動的で流動的で、CMS によって制御されます。
- Uri 自体からは推測できないルートに対して格納されているデータ (たとえば、ユーザーが特定のルートに到達したときに PageId を送信したいが、その PageId を Uri に含めたくない場合など)。