4

現在コンポジットに移行しようとしている ASP.Net プロジェクトでは、非物理ページの処理に問題があります。

簡単にするために、Web ショップがあり、データベース内の各カテゴリに独自の URL があると仮定します。(例: /myshop/服)

ASP.NET プロジェクトでは、このような URL は、要求を処理し、データベースからカテゴリ コンテンツを読み取る Category.aspx ページにルーティングされます。

Composite は「実際の」ページにより重点を置いているようですが、このようなことを実現するにはどうすればよいでしょうか? (特にルーティング)

そして: これらの生成されたページを、たとえば Navigation.Path などのモジュールで動作させる方法はありますか?

4

1 に答える 1

5

メニューの生成とブレッドクラムについては、自分で処理する必要があり、最終的にはSiteMapProvider でSiteMap.Resolveイベントを使用して、「存在しない」ページを動的にフックインします。

ルートに関しては、C1 に機能があり、URL を最初の「実際のページ」に解析し、作業できる URL の余分な部分を渡します。/myshop がショップ ページで、ユーザーが /myshop/clothes をリクエストした場合、実行されるのは /myshow であり、カテゴリを処理するコードをそこに配置します。

「myshop」ページで「服」を抽出するコードは になりComposite.Core.Routing.Pages.C1PageRoute.GetPathInfo()、C1 に 404 エラーをスローしないように指示するには、 を呼び出しComposite.Core.Routing.Pages.C1PageRoute.RegisterPathInfoUsage()て、「服」が有効なカテゴリであることを C1 に知らせます。

API の詳細については、こちらをご覧ください。

カテゴリが選択されたときや、ユーザーが /myshop を直接クリックしたときなど、さまざまな状況を処理する必要がある場合は、特定のテンプレートを使用するように MyShop ページを設定し、そこで<rendering:contentplaceholder>要素を関数でラップします。一種のelse-ifロジック。カテゴリが選択されていない<rendering:contentplaceholder>場合は、 のコンテンツを出力します。それ以外の場合は、カテゴリに基づいて検索を行い、代わりに他のコンテンツを出力します。

于 2011-11-27T23:41:14.233 に答える