MvcSiteMapProvider 和带有连字符的 url

本文关键字:url 连字符 MvcSiteMapProvider | 更新日期: 2023-09-27 18:34:52

我有一个MVC网站,它使用带有连字符的URL(用于SEO优化(,例如:

www.domain.com/about-us/know-our-services

现在我已经实现了生成动态面包屑的MvcSiteMapProvider,但对于带有连字符的 URL,它不起作用(在站点地图上找不到它(。

我该如何解决这个问题?

MvcSiteMapProvider 和带有连字符的 url

生成自定义 URL 的建议方法是调整路由以构建 URL 方案。为了使 MvcSiteMapProvider 生成正确的 URL,必须确保可以解析传出路由。

路由是双向映射。传入路由在 RouteBase 类的 GetRouteData 方法中确定。传出路由由 RouteBase 类的GetVirtualPath方法确定。传入路由是 MVC 用来确定与给定控制器和操作匹配的 URL 的路由。MVC 和 MvcSiteMapProvider 都用来解析 URL 的GetVirtualPath方法,因此必须实现它才能使 MvcSiteMapProvider 与自定义 URL 一起使用。

查看 ASP.NET MVC 中的自定义路由,了解如何通过子类化 RouteBase 来实现这些方法的一些想法。这些相同的思路也适用于注册 Route 类 - 必须确保双向解析才能使其正常工作。