2

次のシナリオをモデル化する必要がありますが、MvcSitemapProvider で動作させることができません (私の問題は、デフォルトの SiteMapProvider にも直接マップされていると思います)。デフォルトのブレッドクラム コントロールを動的データで適切に動作させたいと考えています。

productsグループ化されたリストがありcategoryますparent-category

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

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

(1) /Products
(2) /Products/MainCategory
(3) /Products/MainCategory/Category
(4) /Products/MainCategory/Category/Product

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

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

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

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


私は現在、次のものを持っています:

  • 2
    /Products、/Products/MainCategory および /Products/MainCategory/Category のルート 1 -> ProductsController.Index() へのマッピング
    /Products/MainCategory/Category/Product の 1 -> ProductsController.Product() へのマッピング
  • dynamicParameters が定義されたサイトマップ内の 1 つのエントリ
    (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>
4

1 に答える 1

2

現在、カスタムを使用していますSiteMapProvider。また、まったく関係のないカスタム ルートも維持しています。

于 2010-01-11T21:12:34.243 に答える