Comment modéliser ce scénario de navigation avec la route efficace et Plan du site ASP.NET?
-
19-09-2019 - |
Question
i besoin de modéliser le scénario suivant, mais je ne peux pas le faire fonctionner avec le MvcSitemapProvider (je pense que mon problème aussi des cartes directement à la valeur par défaut SiteMapProvider). Je veux obtenir la valeur par défaut panure contrôle pour fonctionner correctement avec mes données dynamiques.
J'ai une liste de products
qui sont regroupées par category
qui ont une parent-category
- ParentCategory
- Catégorie
- Produit
Je veux être en mesure d'utiliser l'adresse suivante (s):
(1) / Produits
(2) / Produits / MainCategory
(3) / Produits / MainCategory / Catégorie
(4) / Produits / MainCategory / Catégorie / Produit
Il est évident que ma solution ci-dessous est pas optimale.
Le nœud Products
dans le plan Sitemap ne pas ChildNodes, donc ils ne se présentera pas dans mon menu.
J'ai créé un objet intermédiaire qui ajoute les catégories maincategories et ils apparaissent dans mon menu. Mais cela ne résoudra pas le problème que d'autres contrôles (miettes de pain) dire que je suis sur / Produits.
Dois-je changer mes itinéraires ou changer ma définition de plan du site? Ou peut-être autre chose?
J'ai actuellement les éléments suivants:
- 2 Routes
1 pour / Produits, / Produits / MainCategory et / Produits / MainCategory / Catégorie -> cartographie à ProductsController.Index ()
1 pour / Produits / MainCategory / Catégorie / Produit -> cartographie à ProductsController.Product () - 1 entrée dans le site avec dynamicParameters définis (MainCategory; Catégorie)
Global.asax Route définition:
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 = ""} _
)
je les entrées suivantes dans mon plan du 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>
La solution
J'utilise actuellement un SiteMapProvider
personnalisé. Je maintiens toujours aussi des itinéraires personnalisés qu'ils ne sont aucunement liés.