ASP.NETMVCを使用してフォーラム/メッセージボードを作成したいと思います。これらのタイプのフォーラムでかなり一般的なのは、階層的な掲示板のカテゴリです。たとえば、次のようになります。
-一般的な議論
-テクニカルサポート-
ウェブサイトテクニカルサポート-製品
テクニカルサポート
---製品Aテクニカルサポート
---製品Bテクニカルサポート
各カテゴリの下にはトピックがあり、メッセージはそれらのトピックに属します。私が主に関心を持っているのは、1。)URLを指定して正しい場所に到達すること、2。)URLに不要な情報を大量に含めないこと、3。)コードからURLを再作成できることです。
URLを次のようにしたいと思います。
mysite.com/Forum/-フォーラムインデックス mysite.com/Forum/General-Discussion/-「一般的なディスカッション」の掲示板インデックス mysite.com/Forum/Technical-Support/Product/Product-A/-「ProductATechSupport」のボードインデックス mysite.com/Forum/Technical-Support/Website/Topic1004/-「WebsiteTechnicalSupport」ボードのID1004のトピックのトピックインデックス mysite.com/Forum/Technical-Support/Website/Topic1004/3-ID1004のトピックの3ページ目
ここで、アクション名は私がどこにいるかに基づいて推測できるため、これから除外しました。データベース内の各Boardエンティティには、インデックスが付けられた「UrlPart」列があるため、そのテーブルに対して比較的高速なクエリを実行して、自分がどこにいるかを把握できると期待しています。
問題は、正しい場所を見つけるために、カスタムルートハンドラー、カスタムルートバインダーを使用する必要があるのか、それともあいまいなルーティングルールを作成するだけなのかということです。
この提案はかなり良さそうに見えますが、少しの利益のために多くの作業のようにも見えます: 検索用のASP.NETMVCカスタムルーティング
これは、モデルバインディングの作成がより簡単であることを示しているようです: MVC動的ルート
#3を満たすには、独自のカスタムURL生成ロジックを作成する必要があります。