开发者

How to model this navigation scenario with efficient Route and ASP.NET Sitemap?

开发者 https://www.devze.com 2022-12-15 14:48 出处:网络
i need to model the fol开发者_StackOverflow中文版lowing scenario, but I can\'t get it working with the MvcSitemapProvider (i think my problem also maps directly to the default SiteMapProvider). I want

i need to model the fol开发者_StackOverflow中文版lowing scenario, but I can't get it working with the MvcSitemapProvider (i think my problem also maps directly to the default SiteMapProvider). I want to get the default breadcrumbs control to work properly with my dynamic data.

I have a list of products which are grouped by category which have a parent-category

  • ParentCategory
    • Category
      • Product

I want to be able to use the following url(s):

(1) /Products

(2) /Products/MainCategory

(3) /Products/MainCategory/Category

(4) /Products/MainCategory/Category/Product

Obviously my solution below is not optimal.

The Products node in the Sitemap doesn't have ChildNodes, so they won't show up in my Menu.

I've created an intermediary object which adds the maincategories and categories so they show up in my menu. But this won't fix the problem as other controls (breadcrumbs) just say that I am on /Products.

Should I change my routes or change my sitemap definition? Or maybe something else?


I currently have the following:

  • 2 Routes

    1 for /Products, /Products/MainCategory and /Products/MainCategory/Category -> mapping to ProductsController.Index()

    1 for /Products/MainCategory/Category/Product -> mapping to ProductsController.Product()

  • 1 entry in the Sitemap

    with dynamicParameters defined (MainCategory;Category)

Global.asax Route definition:

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

I have the following entries in my sitemap:

<?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>


I'm currently using a custom SiteMapProvider. I'm still also maintaining custom routes they are in no way related.

0

精彩评论

暂无评论...
验证码 换一张
取 消