Как смоделировать этот сценарий навигации с помощью эффективного маршрута и ASP.NET Sitemap? - PullRequest
2 голосов
/ 07 января 2010

Мне нужно смоделировать следующий сценарий, но я не могу заставить его работать с MvcSitemapProvider (я думаю, что моя проблема также отображается непосредственно на SiteMapProvider по умолчанию). Я хочу, чтобы стандартный элемент управления хлебными крошками работал должным образом с моими динамическими данными.

У меня есть список products, сгруппированных по category, которые имеют parent-category

  • ParentCategory
    • Категория
      • Продукт

Я хочу использовать следующие 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>

1 Ответ

2 голосов
/ 12 января 2010

Я сейчас использую пользовательский SiteMapProvider. Я до сих пор также поддерживаю пользовательские маршруты, с которыми они никак не связаны.

...