Pergunta

eu preciso para modelar o seguinte cenário, mas não posso fazê-lo funcionar com o MvcSitemapProvider (eu acho que o meu problema também mapeia diretamente para o SiteMapProvider padrão). Eu quero começar a farinha de rosca padrão controlar para funcionar corretamente com os meus dados dinâmicos.

Eu tenho uma lista de products que são agrupados por category que têm uma parent-category

  • ParentCategory
    • Categoria
      • produtos

Eu quero ser capaz de usar o seguinte URL (s):

(1) / Produtos
(2) / Produtos / MainCategory
(3) / Produtos / MainCategory / Categoria
(4) / Produtos / MainCategory / Categoria de Produto /

Obviamente minha solução abaixo não é o ideal.

O nó Products no Sitemap não tem ChildNodes, então eles não vão aparecer na minha Menu.

Eu criei um objeto intermediário que agrega os maincategories e categorias para que eles aparecem na minha menu. Mas isso não vai resolver o problema como outros controles (pão ralado) apenas dizer que estou em / produtos.

Devo mudar minhas rotas ou mudar a minha definição Sitemap? Ou talvez algo mais?


Eu tenho atualmente o seguinte:

  • 2 Rotas
    1 para / Produtos, / Produtos / MainCategory e / Produtos / MainCategory / Categoria -> mapeamento para ProductsController.Index ()
    1 para / Produtos / MainCategory / categoria / produto -> mapeamento para ProductsController.Product ()
  • 1 entrada no Mapa do Site
    com dynamicParameters definidos (MainCategory; Categoria)

definição Global.asax Route:

    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 = ""} _
    )

Eu tenho as seguintes entradas no meu mapa do site:

<?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>
Foi útil?

Solução

Atualmente estou usando um SiteMapProvider personalizado. Eu ainda estou também a manutenção de rotas personalizadas são de forma alguma relacionado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top