Domanda

ho bisogno di modellare il seguente scenario, ma non riesco a farlo funzionare con la MvcSitemapProvider (penso che il mio problema mappe anche direttamente al default SiteMapProvider). Voglio ottenere il default pangrattato controllo per funzionare correttamente con il mio dati dinamici.

Ho una lista di products che sono raggruppati per category che hanno un parent-category

  
      
  • parentCategory
  •   
    •   
    • Categoria
    •   
  •   
    •   
      •   
      • prodotto
      •   
    •   
  •   

Voglio essere in grado di utilizzare il seguente URL (s):

  

(1) / Prodotti
   (2) / Prodotti / MainCategory
   (3) / Prodotti / MainCategory / Categoria
   (4) / Prodotti / MainCategory / categoria / prodotto

Ovviamente la mia soluzione qui di seguito non è ottimale.

Il nodo Products nella Sitemap non ha ChildNodes, in modo che non apparirà nel mio menu.

Ho creato un oggetto intermediario che aggiunge le categorie principali e le categorie in modo essi mostrano nel mio menu. Ma questo non risolverà il problema come altri controlli (pane) solo dire che io sono il / i prodotti.

Devo cambiare i miei percorsi o modificare la mia definizione del sito? O forse qualcos'altro?


Al momento ho il seguente:

  • 2 Percorsi
    1 per / Prodotti, / Prodotti / MainCategory e / Prodotti / MainCategory / Categoria -> mappatura per ProductsController.Index ()
    1 per / Prodotti / MainCategory / categoria / prodotto -> mappatura per ProductsController.Product ()
  • 1 voce nel sito
    con dynamicParameters definite (MainCategory; Categoria)

definizione Global.asax percorso:

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

Ho le seguenti voci nel mio sito:

<?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>
È stato utile?

Soluzione

Attualmente sto usando un SiteMapProvider personalizzato. Sto ancora anche il mantenimento di percorsi personalizzati sono in alcun modo collegato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top