Мне нужно смоделировать следующий сценарий, но я не могу заставить его работать с MvcSitemapProvider (я думаю, что моя проблема также отображается непосредственно на SiteMapProvider по умолчанию). Я хочу, чтобы стандартный элемент управления хлебными крошками работал должным образом с моими динамическими данными.
У меня есть список products
, сгруппированных по category
, которые имеют parent-category
Я хочу использовать следующие URL:
(1) / Продукция
(2) / Продукция / ГлавнаяКатегория
(3) / Продукция / ГлавнаяКатегория / Категория
(4) / Продукция / ГлавнаяКатегория / Категория / Товар
Очевидно, что мое решение ниже не является оптимальным.
Узел Products
в файле Sitemap не имеет дочерних узлов, поэтому они не отображаются в моем меню.
Я создал промежуточный объект, который добавляет основные категории и категории, чтобы они отображались в моем меню. Но это не решит проблему, так как другие элементы управления (панировочные сухари) просто говорят, что я на /Products.
Должен ли я изменить свои маршруты или изменить определение карты сайта? Или может быть что-то еще?
В настоящее время у меня есть следующее:
- 2 маршрута
1 для / Продукты, / Продукты / ГлавнаяКатегория и / Продукты / ГлавнаяКатегория / Категория -> отображение на ProductsController.Index ()
1 для / Продукты / ГлавнаяКатегория / Категория / Продукт -> отображение на ProductsController.Product ()
- 1 запись в файле Sitemap
с определенными динамическими параметрами (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>