Pregunta

i necesidad de modelar el siguiente escenario, pero no puedo hacerlo funcionar con el MvcSitemapProvider (creo que mi problema también se correlaciona directamente con la SiteMapProvider por defecto). Quiero conseguir el pan rallado por defecto controlan para trabajar correctamente con mi dinámico de datos.

tengo una lista de products que se agrupan por category que tienen un parent-category

  
      
  • ParentCategory
  •   
    •   
    • Categoría
    •   
  •   
    •   
      •   
      • Producto
      •   
    •   
  •   

Quiero ser capaz de utilizar la siguiente URL (s):

  

(1) / Productos
   (2) / Productos / MainCategory
   (3) / Productos / MainCategory / Categoría
   (4) / Productos / MainCategory / Categoría / Producto

Es evidente que mi solución a continuación no es óptimo.

El nodo Products en el mapa del sitio no tiene ChildNodes, por lo que no se mostrará en mi menú.

He creado un objeto intermediario que suma las maincategories y categorías por lo que aparecen en mi menú. Pero esto no va a solucionar el problema como otros controles (pan rallado) acaba de decir que estoy en / Productos.

¿Debo cambiar mis rutas o cambiar mi definición del sitio? O tal vez algo más?


Actualmente tengo el siguiente:

  • 2 Rutas
    1 para el / los productos, / Productos / MainCategory y / Productos / MainCategory / Categoría -> asignación a ProductsController.Index ()
    1 para / Productos / MainCategory / Categoría / Producto -> mapeo a ProductsController.Product ()
  • 1 entrada en el mapa del sitio
    con dynamicParameters definidos (MainCategory; Categoría)

definición Global.asax Ruta:

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

tengo las siguientes entradas en mi mapa del sitio:

<?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>
¿Fue útil?

Solución

Actualmente estoy usando un SiteMapProvider personalizado. Todavía estoy manteniendo también rutas personalizadas que son de ninguna manera relacionada.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top