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