如何使用高效的 Route 和 ASP.NET Sitemap 对该导航场景进行建模?
-
19-09-2019 - |
题
我需要对以下场景进行建模,但我无法让它与 MvcSitemapProvider 一起使用(我认为我的问题也直接映射到默认的 SiteMapProvider)。我想让默认的面包屑控件能够正确处理我的动态数据。
我有一个清单 products
分组依据 category
其中有一个 parent-category
- 父类别
- 类别
- 产品
我希望能够使用以下网址:
(1) /产品
(2) /产品/主要类别
(3) /产品/主类别/类别
(4) /产品/MainCategory/类别/产品
显然我下面的解决方案不是最佳的。
这 Products
站点地图中的节点没有子节点,因此它们不会显示在我的菜单中。
我创建了一个中间对象,它添加了主要类别和类别,以便它们显示在我的菜单中。但这并不能解决问题,因为其他控件(面包屑)只是说我在 /Products 上。
我应该更改路线或更改站点地图定义吗?或者也许是别的什么?
我目前有以下内容:
- 2条路线
1 对于 /Products、/Products/MainCategory 和 /Products/MainCategory/Category -> 映射到 ProductsController.Index()
1 for /Products/MainCategory/Category/Product -> 映射到 ProductsController.Product() - 站点地图中有 1 个条目
定义了动态参数(MainCategory;Category)
Global.asax 路由定义:
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 = ""} _
)
我的站点地图中有以下条目:
<?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>
解决方案
我目前正在使用自定义 SiteMapProvider
. 。我仍然在维护自定义路线,它们没有任何关系。
不隶属于 StackOverflow