Как смоделировать этот сценарий навигации с эффективным маршрутом и ASP.NET Карта сайта?

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

Вопрос

мне нужно смоделировать следующий сценарий, но я не могу заставить его работать с 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.Я по-прежнему также поддерживаю пользовательские маршруты, они никоим образом не связаны.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top