効率的なルートと ASP.NET サイトマップを使用してこのナビゲーション シナリオをモデル化するにはどうすればよいでしょうか?
-
19-09-2019 - |
質問
次のシナリオをモデル化する必要がありますが、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
を使用しています。私はまだまた、彼らは関連のない方法であるカスタムルートを維持しています。
所属していません StackOverflow