Come modellare questo scenario di navigazione con percorso efficiente e ASP.NET Mappa del sito?
-
19-09-2019 - |
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>
Soluzione
Attualmente sto usando un SiteMapProvider
personalizzato. Sto ancora anche il mantenimento di percorsi personalizzati sono in alcun modo collegato.