効率的なルートと ASP.NET サイトマップを使用してこのナビゲーション シナリオをモデル化するにはどうすればよいでしょうか?

StackOverflow https://stackoverflow.com/questions/2021911

質問

次のシナリオをモデル化する必要がありますが、MvcSitemapProvider で動作させることができません (私の問題はデフォルトの SiteMapProvider にも直接マッピングされていると思います)。デフォルトのパンくずリスト コントロールを動的データで適切に動作させる必要があります。

のリストがあります products によってグループ化されています category を持っている parent-category

  • 親カテゴリ
    • カテゴリー
      • 製品

次の URL を使用できるようにしたいです。

(1) /製品
(2) /製品/メインカテゴリー
(3) /製品/メインカテゴリ/カテゴリ
(4) /製品/メインカテゴリ/カテゴリ/製品

明らかに、以下の私の解決策は最適ではありません。

Products サイトマップ内のノードには ChildNodes がないため、メニューには表示されません。

メインカテゴリとカテゴリを追加してメニューに表示されるようにする中間オブジェクトを作成しました。しかし、他のコントロール (ブレッドクラム) は、私が /Products 上にいることを示すだけなので、これでは問題は解決されません。

ルートを変更するか、サイトマップ定義を変更する必要がありますか?それとも何か他のものでしょうか?


現在、次のものがあります。

  • 2ルート
    /Products、/Products/MainCategory、および /Products/MainCategory/Category の場合は 1 -> ProductsController.Index() へのマッピング
    /Products/MainCategory/Category/Product の場合は 1 -> ProductsController.Product() へのマッピング
  • サイトマップに 1 件のエントリ
    DynamicParameters が定義されている場合 (MainCategory;Category)

Global.asax ルート定義:

    routes.MapRoute( _
        "Product", _
        "Products/{MainCategoryName}/{CategoryName}/{ProductName}", _
        New With {.controller = "Products", .action = "Product"} _
    )

    routes.MapRoute( _
        "Products", _
        "Products/{MainCategoryName}/{CategoryName}", _
        New With {.controller = "Products", .action = "Index", .GroupName = "", .CategoryName = ""} _
    )

サイトマップに次のエントリがあります。

<?xml version="1.0" encoding="utf-8" ?>
<siteMap>
  <mvcSiteMapNode controller="Home" action="Index" title="Home" description="Homepage">
    <mvcSiteMapNode controller="Products" action="Index" title="Products" description="" isDynamic="true" dynamicParameters="MainCategoryName;CategoryName" />
  </mvcSiteMapNode>
</siteMap>
役に立ちましたか?

解決

私は現在、カスタムSiteMapProviderを使用しています。私はまだまた、彼らは関連のない方法であるカスタムルートを維持しています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top