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>
Était-ce utile?

La solution

J'utilise actuellement un SiteMapProvider personnalisé. Je maintiens toujours aussi des itinéraires personnalisés qu'ils ne sont aucunement liés.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top